[MITgcm-devel] problem with TAF latest version (2.0.2)
Jean-Michel Campin
jmc at ocean.mit.edu
Thu Oct 14 14:05:57 EDT 2010
Hi,
we have a problem with the latest version of TAF (2.0.2)
which was turned on early this morning.
The verification experiment tutorial_global_oce_optim did not
run on faulks (compiled with gfortran):
> faulks{run}% mitgcmuv_ad > std_outp
> Killed
and on my laptop, with gfortran, I am getting errors at the link stage:
> In function `adautodiff_restore':
> /home/jmc/mitgcm/gcm_gnu/verification/tutorial_global_oce_optim/bld_ad/ad_taf_output.f:530: relocation truncated to fit: R_X86_64_32S against symbol `addynvars_r_2_' defined in COMMON section in ad_taf_output.o
> /home/jmc/mitgcm/gcm_gnu/verification/tutorial_global_oce_optim/bld_ad/ad_taf_output.f:531: relocation truncated to fit: R_X86_64_32S against symbol `addynvars_r_2_' defined in COMMON section in ad_taf_output.o
> ad_taf_output.o: In function `adautodiff_store':
> /home/jmc/mitgcm/gcm_gnu/verification/tutorial_global_oce_optim/bld_ad/ad_taf_output.f:791: relocation truncated to fit: R_X86_64_32S against symbol `addynvars_r_2_' defined in COMMON section in ad_taf_output.o
the TAF option (from taf_ad.log) that I use are:
> taf -outdir . -v1 -reverse -admark ad -i4 -r4 -l taf_ad.log -flow taf_ad_flow.log -toplevel the_main_loop -input xx_theta_dummy,xx_salt_dummy,xx_hflux_dummy,xx_sflux_dummy,xx_tauu_dummy,xx_tauv_dummy,xx_atemp_dummy,xx_aqh_dummy,xx_uwind_dummy,xx_vwind_dummy,xx_diffkr_dummy,xx_kapgm_dummy,xx_efluxp_dummy,xx_hfluxm_dummy -output fc ad_input_code.f
I went back to version 2.0.0 with exactly the same source code and
things were OK (compile and run).
I attach the source code (ad_input_code.f) and the 2 output from TAF,
generated with version 2.0.0 (ad_input_code_ad.f.old) and
with version 2.0.2 (ad_input_code_ad.f.new).
I don't see any obvious reason why we have this problem,
and going to try other compilers and other test experiments.
Thanks,
Jean-Michel
-------------- next part --------------
cadj SUBROUTINE active_read_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_rl OUTPUT = 2
cadj SUBROUTINE active_write_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_rl OUTPUT = 2
cadj SUBROUTINE active_read_tile_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_tile_rl INPUT += 10, 11
cadj SUBROUTINE active_read_tile_rl OUTPUT = 2
cadj SUBROUTINE active_write_tile_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_write_tile_rl INPUT += 10
cadj SUBROUTINE active_write_tile_rl OUTPUT = 2
cadj SUBROUTINE active_read_xz_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_xz_rl OUTPUT = 2
cadj SUBROUTINE active_write_xz_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_xz_rl OUTPUT = 2
cadj SUBROUTINE active_read_yz_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_yz_rl OUTPUT = 2
cadj SUBROUTINE active_write_yz_rl INPUT = 1, 2, 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_yz_rl OUTPUT = 2
cadj SUBROUTINE active_read_xy FTLNAME = g_active_read_xy
cadj SUBROUTINE active_read_xy ADNAME = adactive_read_xy
cadj SUBROUTINE active_read_xy INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_xy OUTPUT = 2
cadj SUBROUTINE active_read_xy ACTIVE = 2
cadj SUBROUTINE active_read_xy DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_xyz FTLNAME = g_active_read_xyz
cadj SUBROUTINE active_read_xyz ADNAME = adactive_read_xyz
cadj SUBROUTINE active_read_xyz INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_xyz OUTPUT = 2
cadj SUBROUTINE active_read_xyz ACTIVE = 2
cadj SUBROUTINE active_read_xyz DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_xz FTLNAME = g_active_read_xz
cadj SUBROUTINE active_read_xz ADNAME = adactive_read_xz
cadj SUBROUTINE active_read_xz INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_xz OUTPUT = 2
cadj SUBROUTINE active_read_xz ACTIVE = 2
cadj SUBROUTINE active_read_xz DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_yz FTLNAME = g_active_read_yz
cadj SUBROUTINE active_read_yz ADNAME = adactive_read_yz
cadj SUBROUTINE active_read_yz INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_yz OUTPUT = 2
cadj SUBROUTINE active_read_yz ACTIVE = 2
cadj SUBROUTINE active_read_yz DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_write_xy FTLNAME = g_active_write_xy
cadj SUBROUTINE active_write_xy ADNAME = adactive_write_xy
cadj SUBROUTINE active_write_xy INPUT = 1, 2, 3, 4, 5, 6
cadj SUBROUTINE active_write_xy OUTPUT = 6
cadj SUBROUTINE active_write_xy ACTIVE = 2 , 6
cadj SUBROUTINE active_write_xy DEPEND = 1, 3, 4, 5
cadj SUBROUTINE active_write_xyz FTLNAME = g_active_write_xyz
cadj SUBROUTINE active_write_xyz ADNAME = adactive_write_xyz
cadj SUBROUTINE active_write_xyz INPUT = 1, 2, 3, 4, 5, 6
cadj SUBROUTINE active_write_xyz OUTPUT = 6
cadj SUBROUTINE active_write_xyz ACTIVE = 2 , 6
cadj SUBROUTINE active_write_xyz DEPEND = 1, 3, 4, 5
cadj SUBROUTINE active_write_xz FTLNAME = g_active_write_xz
cadj SUBROUTINE active_write_xz ADNAME = adactive_write_xz
cadj SUBROUTINE active_write_xz INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_xz OUTPUT = 2
cadj SUBROUTINE active_write_xz ACTIVE = 2
cadj SUBROUTINE active_write_xz DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_write_yz FTLNAME = g_active_write_yz
cadj SUBROUTINE active_write_yz ADNAME = adactive_write_yz
cadj SUBROUTINE active_write_yz INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_yz OUTPUT = 2
cadj SUBROUTINE active_write_yz ACTIVE = 2
cadj SUBROUTINE active_write_yz DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_tile_xy FTLNAME = g_active_read_tile_xy
cadj SUBROUTINE active_read_tile_xy ADNAME = adactive_read_tile_xy
cadj SUBROUTINE active_read_tile_xy INPUT = 1 , 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_tile_xy OUTPUT = 2
cadj SUBROUTINE active_read_tile_xy ACTIVE = 2
cadj SUBROUTINE active_read_tile_xy DEPEND = 1, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_tile_xyz FTLNAME = g_active_read_tile_xyz
cadj SUBROUTINE active_read_tile_xyz ADNAME = adactive_read_tile_xyz
cadj SUBROUTINE active_read_tile_xyz INPUT = 1 , 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_tile_xyz OUTPUT = 2
cadj SUBROUTINE active_read_tile_xyz ACTIVE = 2
cadj SUBROUTINE active_read_tile_xyz DEPEND = 1, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_write_tile_xy FTLNAME = g_active_write_tile_xy
cadj SUBROUTINE active_write_tile_xy ADNAME = adactive_write_tile_xy
cadj SUBROUTINE active_write_tile_xy INPUT = 1, 2, 3, 4, 5, 6, 7
cadj SUBROUTINE active_write_tile_xy OUTPUT =
cadj SUBROUTINE active_write_tile_xy ACTIVE = 2
cadj SUBROUTINE active_write_tile_xy DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_write_tile_xyz FTLNAME = g_active_write_tile_xyz
cadj SUBROUTINE active_write_tile_xyz ADNAME = adactive_write_tile_xyz
cadj SUBROUTINE active_write_tile_xyz INPUT = 1, 2, 3, 4, 5, 6, 7
cadj SUBROUTINE active_write_tile_xyz OUTPUT =
cadj SUBROUTINE active_write_tile_xyz ACTIVE = 2
cadj SUBROUTINE active_write_tile_xyz DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_rl_loc INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_rl_loc OUTPUT = 2
cadj SUBROUTINE active_write_rl_loc INPUT = 1, 2, 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_rl_loc OUTPUT = 2
cadj SUBROUTINE active_read_xz_rl_loc INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_xz_rl_loc OUTPUT = 2
cadj SUBROUTINE active_write_xz_rl_loc INPUT = 1, 2, 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_xz_rl_loc OUTPUT = 2
cadj SUBROUTINE active_read_yz_rl_loc INPUT = 1, 2, 3, 4, 5, 6, 7, 8, 9
cadj SUBROUTINE active_read_yz_rl_loc OUTPUT = 2
cadj SUBROUTINE active_write_yz_rl_loc INPUT = 1, 2, 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_yz_rl_loc OUTPUT = 2
cadj SUBROUTINE active_read_xy_loc FTLNAME = g_active_read_xy_loc
cadj SUBROUTINE active_read_xy_loc ADNAME = adactive_read_xy_loc
cadj SUBROUTINE active_read_xy_loc INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_xy_loc OUTPUT = 2
cadj SUBROUTINE active_read_xy_loc ACTIVE = 2
cadj SUBROUTINE active_read_xy_loc DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_xyz_loc FTLNAME = g_active_read_xyz_loc
cadj SUBROUTINE active_read_xyz_loc ADNAME = adactive_read_xyz_loc
cadj SUBROUTINE active_read_xyz_loc INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_xyz_loc OUTPUT = 2
cadj SUBROUTINE active_read_xyz_loc ACTIVE = 2
cadj SUBROUTINE active_read_xyz_loc DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_xz_loc FTLNAME = g_active_read_xz_loc
cadj SUBROUTINE active_read_xz_loc ADNAME = adactive_read_xz_loc
cadj SUBROUTINE active_read_xz_loc INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_xz_loc OUTPUT = 2
cadj SUBROUTINE active_read_xz_loc ACTIVE = 2
cadj SUBROUTINE active_read_xz_loc DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_read_yz_loc FTLNAME = g_active_read_yz_loc
cadj SUBROUTINE active_read_yz_loc ADNAME = adactive_read_yz_loc
cadj SUBROUTINE active_read_yz_loc INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_read_yz_loc OUTPUT = 2
cadj SUBROUTINE active_read_yz_loc ACTIVE = 2
cadj SUBROUTINE active_read_yz_loc DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_write_xy_loc FTLNAME = g_active_write_xy_loc
cadj SUBROUTINE active_write_xy_loc ADNAME = adactive_write_xy_loc
cadj SUBROUTINE active_write_xy_loc INPUT = 1, 2, 3, 4, 5, 6
cadj SUBROUTINE active_write_xy_loc OUTPUT = 6
cadj SUBROUTINE active_write_xy_loc ACTIVE = 2 , 6
cadj SUBROUTINE active_write_xy_loc DEPEND = 1, 3, 4, 5
cadj SUBROUTINE active_write_xyz_loc FTLNAME = g_active_write_xyz_loc
cadj SUBROUTINE active_write_xyz_loc ADNAME = adactive_write_xyz_loc
cadj SUBROUTINE active_write_xyz_loc INPUT = 1, 2, 3, 4, 5, 6
cadj SUBROUTINE active_write_xyz_loc OUTPUT = 6
cadj SUBROUTINE active_write_xyz_loc ACTIVE = 2 , 6
cadj SUBROUTINE active_write_xyz_loc DEPEND = 1, 3, 4, 5
cadj SUBROUTINE active_write_xz_loc FTLNAME = g_active_write_xz_loc
cadj SUBROUTINE active_write_xz_loc ADNAME = adactive_write_xz_loc
cadj SUBROUTINE active_write_xz_loc INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_xz_loc OUTPUT = 2
cadj SUBROUTINE active_write_xz_loc ACTIVE = 2
cadj SUBROUTINE active_write_xz_loc DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE active_write_yz_loc FTLNAME = g_active_write_yz_loc
cadj SUBROUTINE active_write_yz_loc ADNAME = adactive_write_yz_loc
cadj SUBROUTINE active_write_yz_loc INPUT = 1 , 3, 4, 5, 6, 7, 8
cadj SUBROUTINE active_write_yz_loc OUTPUT = 2
cadj SUBROUTINE active_write_yz_loc ACTIVE = 2
cadj SUBROUTINE active_write_yz_loc DEPEND = 1, 3, 4, 5, 6, 7
cadj SUBROUTINE autodiff_inadmode_set INPUT = 1
cadj SUBROUTINE autodiff_inadmode_set OUTPUT =
cadj SUBROUTINE autodiff_inadmode_set ACTIVE =
cadj SUBROUTINE autodiff_inadmode_set DEPEND = 1
cadj SUBROUTINE autodiff_inadmode_set REQUIRED
cadj SUBROUTINE autodiff_inadmode_set INFLUENCED
cadj SUBROUTINE autodiff_inadmode_set ADNAME =
CADJ & adautodiff_inadmode_set
cadj SUBROUTINE autodiff_inadmode_set FTLNAME =
CADJ & g_autodiff_inadmode_set
cadj SUBROUTINE autodiff_inadmode_unset INPUT = 1
cadj SUBROUTINE autodiff_inadmode_unset OUTPUT =
cadj SUBROUTINE autodiff_inadmode_unset ACTIVE =
cadj SUBROUTINE autodiff_inadmode_unset DEPEND = 1
cadj SUBROUTINE autodiff_inadmode_unset REQUIRED
cadj SUBROUTINE autodiff_inadmode_unset INFLUENCED
cadj SUBROUTINE autodiff_inadmode_unset ADNAME =
CADJ & adautodiff_inadmode_unset
cadj SUBROUTINE autodiff_inadmode_unset FTLNAME =
CADJ & g_autodiff_inadmode_unset
CADJ SUBROUTINE cg2d ADNAME = cg2d
CADJ SUBROUTINE cg2d FTLNAME = cg2d
CADJ SUBROUTINE cg2d INPUT = 1,2,3,4,5,6
CADJ SUBROUTINE cg2d OUTPUT = 2,3,4,5
CADJ SUBROUTINE cg2d ACTIVE = 1,2
CADJ SUBROUTINE cg2d DEPEND = 6
CADJ SUBROUTINE do_write_pickup INPUT = 1,2,3,4
CADJ SUBROUTINE do_write_pickup OUTPUT =
CADJ SUBROUTINE do_write_pickup DEPEND = 1,2,3,4
CADJ SUBROUTINE do_write_pickup REQUIRED
CADJ SUBROUTINE write_pickup INPUT = 1,2,3,4
CADJ SUBROUTINE write_pickup OUTPUT =
CADJ SUBROUTINE write_pickup DEPEND = 1,2,3,4
CADJ SUBROUTINE write_pickup REQUIRED
CADJ SUBROUTINE packages_write_pickup INPUT = 1,2,3,4
CADJ SUBROUTINE packages_write_pickup OUTPUT =
CADJ SUBROUTINE packages_write_pickup DEPEND = 1,2,3,4
CADJ SUBROUTINE packages_write_pickup REQUIRED
CADJ SUBROUTINE write_checkpoint INPUT = 1,2,3,4
CADJ SUBROUTINE write_checkpoint OUTPUT =
CADJ SUBROUTINE write_checkpoint DEPEND = 1,2,3,4
CADJ SUBROUTINE write_checkpoint REQUIRED
CADJ SUBROUTINE check_pickup INPUT = 1,2,3,4,5
CADJ SUBROUTINE check_pickup OUTPUT =
cadj SUBROUTINE damp_adj FTLNAME = g_damp_adj
cadj SUBROUTINE damp_adj ADNAME = addamp_adj
cadj SUBROUTINE damp_adj INPUT = 1, 2, 3, 4, 5, 6, 7
cadj SUBROUTINE damp_adj OUTPUT =
cadj SUBROUTINE damp_adj ACTIVE = 6
cadj SUBROUTINE damp_adj DEPEND = 1, 2, 3, 4, 5 , 7
CADJ SUBROUTINE DO_TIME_AVERAGES INPUT = 1,2,3,4,5
CADJ SUBROUTINE DO_TIME_AVERAGES OUTPUT =
CADJ SUBROUTINE TIMEAVER_1FLD_XYZ INPUT = 1, 3,4,5,6,7
CADJ SUBROUTINE TIMEAVER_1FLD_XYZ OUTPUT = 2
CADJ SUBROUTINE TIMEAVER_2FLD_XYZ INPUT = 1,2, 4,5,6,7,8,9
CADJ SUBROUTINE TIMEAVER_2FLD_XYZ OUTPUT = 3
CADJ SUBROUTINE TIMEAVER_FINAL_XY INPUT = 2,3,4,5
CADJ SUBROUTINE TIMEAVER_FINAL_XY OUTPUT = 1
CADJ SUBROUTINE TIMEAVER_FINAL_XYZ INPUT = 2,3,4,5,6
CADJ SUBROUTINE TIMEAVER_FINAL_XYZ OUTPUT = 1
CADJ SUBROUTINE TIMEAVER_INI_XY INPUT = 2,3,4
CADJ SUBROUTINE TIMEAVER_INI_XY OUTPUT = 1
CADJ SUBROUTINE TIMEAVER_INI_XYZ INPUT = 2,3,4,5
CADJ SUBROUTINE TIMEAVER_INI_XYZ OUTPUT = 1
CADJ SUBROUTINE WRITE_TIME_AVERAGES INPUT = 1,2,3
CADJ SUBROUTINE WRITE_TIME_AVERAGES OUTPUT =
CADJ SUBROUTINE DO_STATEVARS_DIAGS INPUT = 1,2,3,4
CADJ SUBROUTINE DO_STATEVARS_DIAGS OUTPUT =
CADJ SUBROUTINE DO_STATEVARS_DIAGS DEPEND = 1,2,3,4
CADJ SUBROUTINE DO_STATEVARS_DIAGS REQUIRED
CADJ SUBROUTINE DO_STATEVARS_TAVE INPUT = 1,2,3
CADJ SUBROUTINE DO_STATEVARS_TAVE OUTPUT =
CADJ SUBROUTINE DO_STATEVARS_TAVE DEPEND = 1,2,3
CADJ SUBROUTINE DO_STATEVARS_TAVE REQUIRED
cadj SUBROUTINE dummy_in_stepping INPUT = 1, 2, 3
cadj SUBROUTINE dummy_in_stepping OUTPUT =
cadj SUBROUTINE dummy_in_stepping ACTIVE =
cadj SUBROUTINE dummy_in_stepping DEPEND = 1, 2, 3
cadj SUBROUTINE dummy_in_stepping REQUIRED
cadj SUBROUTINE dummy_in_stepping INFLUENCED
cadj SUBROUTINE dummy_in_stepping ADNAME = addummy_in_stepping
cadj SUBROUTINE dummy_in_stepping FTLNAME = g_dummy_in_stepping
cadj SUBROUTINE global_max_r4 INPUT = 1, 2
cadj SUBROUTINE global_max_r4 OUTPUT = 1
cadj SUBROUTINE global_max_r4 ACTIVE = 1
cadj SUBROUTINE global_max_r4 DEPEND = 2
cadj SUBROUTINE global_max_r4 ADNAME = global_admax_r4
cadj SUBROUTINE global_max_r4 FTLNAME = global_max_r4
cadj SUBROUTINE global_max_r8 INPUT = 1, 2
cadj SUBROUTINE global_max_r8 OUTPUT = 1
cadj SUBROUTINE global_max_r8 ACTIVE = 1
cadj SUBROUTINE global_max_r8 DEPEND = 2
cadj SUBROUTINE global_max_r8 ADNAME = global_admax_r8
cadj SUBROUTINE global_max_r8 FTLNAME = global_max_r8
cadj SUBROUTINE global_sum_r4 INPUT = 1, 2
cadj SUBROUTINE global_sum_r4 OUTPUT = 1
cadj SUBROUTINE global_sum_r4 ACTIVE = 1
cadj SUBROUTINE global_sum_r4 DEPEND = 2
cadj SUBROUTINE global_sum_r4 ADNAME = global_adsum_r4
cadj SUBROUTINE global_sum_r4 FTLNAME = global_sum_r4
cadj SUBROUTINE global_sum_r8 INPUT = 1, 2
cadj SUBROUTINE global_sum_r8 OUTPUT = 1
cadj SUBROUTINE global_sum_r8 ACTIVE = 1
cadj SUBROUTINE global_sum_r8 DEPEND = 2
cadj SUBROUTINE global_sum_r8 ADNAME = global_adsum_r8
cadj SUBROUTINE global_sum_r8 FTLNAME = global_sum_r8
cadj SUBROUTINE global_sum_tile_rl INPUT = 1, 3
cadj SUBROUTINE global_sum_tile_rl OUTPUT = 2
cadj SUBROUTINE global_sum_tile_rl ACTIVE = 1, 2
cadj SUBROUTINE global_sum_tile_rl DEPEND = 3
cadj SUBROUTINE global_sum_tile_rl ADNAME = global_adsum_tile_rl
cadj SUBROUTINE global_sum_tile_rl FTLNAME = global_sum_tile_rl
CADJ SUBROUTINE ini_parms INPUT = 1
CADJ SUBROUTINE ini_parms OUTPUT =
CADJ SUBROUTINE READSYMTILE_RS INPUT = 1,2 ,4,5 ,7
CADJ SUBROUTINE READSYMTILE_RS OUTPUT = 3, 6
CADJ SUBROUTINE calc_oce_mxlayer INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE calc_oce_mxlayer OUTPUT =
CADJ SUBROUTINE do_the_model_io INPUT = 1,2,3,4
CADJ SUBROUTINE do_the_model_io OUTPUT =
CADJ SUBROUTINE do_the_model_io DEPEND = 1,2,3,4
CADJ SUBROUTINE do_the_model_io REQUIRED
CADJ SUBROUTINE TURNOFF_MODEL_IO INPUT = 1,2
CADJ SUBROUTINE TURNOFF_MODEL_IO OUTPUT =
CADJ SUBROUTINE modeldata_example INPUT = 1
CADJ SUBROUTINE modeldata_example OUTPUT =
CADJ SUBROUTINE plot_field_xyrs INPUT = 1,2,3,4
CADJ SUBROUTINE plot_field_xyrs OUTPUT =
CADJ SUBROUTINE plot_field_xyrl INPUT = 1,2,3,4
CADJ SUBROUTINE plot_field_xyrl OUTPUT =
CADJ SUBROUTINE plot_field_xyzrs INPUT = 1,2,3,4,5
CADJ SUBROUTINE plot_field_xyzrs OUTPUT =
CADJ SUBROUTINE plot_field_xyzrl INPUT = 1,2,3,4,5
CADJ SUBROUTINE plot_field_xyzrl OUTPUT =
CADJ SUBROUTINE plot_field_xzrs INPUT = 1,2,3,4,5
CADJ SUBROUTINE plot_field_xzrs OUTPUT =
CADJ SUBROUTINE plot_field_xzrl INPUT = 1,2,3,4,5
CADJ SUBROUTINE plot_field_xzrl OUTPUT =
CADJ SUBROUTINE plot_field_yzrs INPUT = 1,2,3,4,5
CADJ SUBROUTINE plot_field_yzrs OUTPUT =
CADJ SUBROUTINE plot_field_yzrl INPUT = 1,2,3,4,5
CADJ SUBROUTINE plot_field_yzrl OUTPUT =
CADJ SUBROUTINE write_state INPUT = 1,2,3
CADJ SUBROUTINE write_state OUTPUT =
CADJ function myactivefunction INPUT = 1,2
CADJ function myactivefunction OUTPUT =
CADJ function myactivefunction ACTIVE = 1
CADJ function myactivefunction DEPEND = 1,2
CADJ function myactivefunction INFLUENCED
CADJ function myactivefunction REQUIRED
CADJ function myactivefunction ADNAME = admyactivefunction
CADJ function myactivefunction FTLNAME = g_myactivefunction
cadj SUBROUTINE zero_adj_1d FTLNAME = g_zero_adj_1d
cadj SUBROUTINE zero_adj_1d ADNAME = adzero_adj_1d
cadj SUBROUTINE zero_adj_1d INPUT = 1, 2, 3
cadj SUBROUTINE zero_adj_1d OUTPUT =
cadj SUBROUTINE zero_adj_1d ACTIVE = 2
cadj SUBROUTINE zero_adj_1d DEPEND = 1, 3
cadj SUBROUTINE zero_adj_loc FTLNAME = g_zero_adj_loc
cadj SUBROUTINE zero_adj_loc ADNAME = adzero_adj_loc
cadj SUBROUTINE zero_adj_loc INPUT = 1, 2, 3
cadj SUBROUTINE zero_adj_loc OUTPUT =
cadj SUBROUTINE zero_adj_loc ACTIVE = 2
cadj SUBROUTINE zero_adj_loc DEPEND = 1, 3
cadj SUBROUTINE zero_adj FTLNAME = g_zero_adj
cadj SUBROUTINE zero_adj ADNAME = adzero_adj
cadj SUBROUTINE zero_adj INPUT = 1, 2, 3
cadj SUBROUTINE zero_adj OUTPUT =
cadj SUBROUTINE zero_adj ACTIVE = 2
cadj SUBROUTINE zero_adj DEPEND = 1, 3
CADJ SUBROUTINE cd_code_read_pickup INPUT = 1,2
CADJ SUBROUTINE cd_code_read_pickup OUTPUT =
CADJ SUBROUTINE cd_code_read_pickup DEPEND = 1,2
CADJ SUBROUTINE cd_code_read_pickup REQUIRED
CADJ SUBROUTINE cd_code_write_pickup INPUT = 1,2,3,4,5
CADJ SUBROUTINE cd_code_write_pickup OUTPUT =
CADJ SUBROUTINE cd_code_write_pickup DEPEND = 1,2,3,4,5
CADJ SUBROUTINE cd_code_write_pickup REQUIRED
cadj SUBROUTINE ctrl_bound_3D FTLNAME = g_ctrl_bound_3D
cadj SUBROUTINE ctrl_bound_3D ADNAME = adctrl_bound_3D
cadj SUBROUTINE ctrl_bound_3D INPUT = 1,2,3,4
cadj SUBROUTINE ctrl_bound_3D OUTPUT =
cadj SUBROUTINE ctrl_bound_3D ACTIVE = 1
cadj SUBROUTINE ctrl_bound_3D DEPEND = 1,2,3,4
cadj SUBROUTINE ctrl_bound_2D FTLNAME = g_ctrl_bound_2D
cadj SUBROUTINE ctrl_bound_2D ADNAME = adctrl_bound_2D
cadj SUBROUTINE ctrl_bound_2D INPUT = 1,2,3,4
cadj SUBROUTINE ctrl_bound_2D OUTPUT =
cadj SUBROUTINE ctrl_bound_2D ACTIVE = 1
cadj SUBROUTINE ctrl_bound_2D DEPEND = 1,2,3,4
CADJ SUBROUTINE DEBUG_STATS_RL INPUT = 1,2,3,4
CADJ SUBROUTINE DEBUG_STATS_RL OUTPUT =
CADJ SUBROUTINE DEBUG_STATS_RS INPUT = 1,2,3,4
CADJ SUBROUTINE DEBUG_STATS_RS OUTPUT =
CADJ SUBROUTINE DEBUG_CALL INPUT = 1,2
CADJ SUBROUTINE DEBUG_CALL OUTPUT =
CADJ SUBROUTINE DEBUG_LEAVE INPUT = 1,2
CADJ SUBROUTINE DEBUG_LEAVE OUTPUT =
CADJ SUBROUTINE DEBUG_ENTER INPUT = 1,2
CADJ SUBROUTINE DEBUG_ENTER OUTPUT =
CADJ SUBROUTINE DEBUG_MSG INPUT = 1,2
CADJ SUBROUTINE DEBUG_MSG OUTPUT =
CADJ SUBROUTINE DEBUG_CS_CORNER_UV INPUT = 1,2,3,4,5,6,7,8
CADJ SUBROUTINE DEBUG_CS_CORNER_UV OUTPUT =
CADJ SUBROUTINE GMREDI_OUTPUT INPUT = 1,2,3
CADJ SUBROUTINE GMREDI_OUTPUT OUTPUT =
CADJ SUBROUTINE GMREDI_DIAGNOSTICS_FILL INPUT = 1,2,3
CADJ SUBROUTINE GMREDI_DIAGNOSTICS_FILL OUTPUT =
CADJ SUBROUTINE GMREDI_DIAGNOSTICS_FILL DEPEND = 1,2,3
CADJ SUBROUTINE GMREDI_DIAGNOSTICS_FILL REQUIRED
CADJ SUBROUTINE mds_read_field INPUT = 1,2,3,4,5,6,7, 10,11
CADJ SUBROUTINE mds_read_field OUTPUT = 8,9
CADJ SUBROUTINE mds_read_field DEPEND = 1,2,3,4,5,6,7,8,9,10,11
CADJ SUBROUTINE mds_read_field REQUIRED
CADJ SUBROUTINE mds_write_field INPUT = 1,2,3,4,5,6,7,8,9,10,11,12,13
CADJ SUBROUTINE mds_write_field OUTPUT =
cCADJ SUBROUTINE mds_read_rec_xz INPUT = 1,2,3,4,5, 8,9
cCADJ SUBROUTINE mds_read_rec_xz OUTPUT = 6,7
cCADJ SUBROUTINE mds_read_rec_xz DEPEND = 1,2,3,4,5,6,7,8,9
cCADJ SUBROUTINE mds_read_rec_xz REQUIRED
cCADJ SUBROUTINE mds_read_rec_yz INPUT = 1,2,3,4,5, 8,9
cCADJ SUBROUTINE mds_read_rec_yz OUTPUT = 6,7
cCADJ SUBROUTINE mds_read_rec_yz DEPEND = 1,2,3,4,5,6,7,8,9
cCADJ SUBROUTINE mds_read_rec_yz REQUIRED
CADJ SUBROUTINE mds_read_sec_xz INPUT = 1,2,3,4,5, 8,9
CADJ SUBROUTINE mds_read_sec_xz OUTPUT = 6,7
CADJ SUBROUTINE mds_read_sec_xz DEPEND = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mds_read_sec_xz REQUIRED
CADJ SUBROUTINE mds_read_sec_yz INPUT = 1,2,3,4,5, 8,9
CADJ SUBROUTINE mds_read_sec_yz OUTPUT = 6,7
CADJ SUBROUTINE mds_read_sec_yz DEPEND = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mds_read_sec_yz REQUIRED
CADJ SUBROUTINE mds_write_sec_xz INPUT = 1,2,3,4,5,6,7,8,9,10,11
CADJ SUBROUTINE mds_write_sec_xz OUTPUT =
CADJ SUBROUTINE mds_write_sec_yz INPUT = 1,2,3,4,5,6,7,8,9,10,11
CADJ SUBROUTINE mds_write_sec_yz OUTPUT =
CADJ SUBROUTINE mdsreadfield INPUT = 1,2,3,4, 6,7
CADJ SUBROUTINE mdsreadfield OUTPUT = 5
CADJ SUBROUTINE mdsreadfield DEPEND = 1,2,3,4,5,6,7
CADJ SUBROUTINE mdsreadfield REQUIRED
CADJ SUBROUTINE mdswritefield INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mdswritefield OUTPUT =
CADJ SUBROUTINE mdsreadvector INPUT = 1,2,3,4, 6,7,8,9
CADJ SUBROUTINE mdsreadvector OUTPUT = 5
CADJ SUBROUTINE mdswritevector INPUT = 1,2,3,4,5,6,7,8,9,10,11
CADJ SUBROUTINE mdswritevector OUTPUT =
CADJ SUBROUTINE mdsreadfieldxz INPUT = 1,2,3,4, 6,7
CADJ SUBROUTINE mdsreadfieldxz OUTPUT = 5
CADJ SUBROUTINE mdswritefieldxz INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mdswritefieldxz OUTPUT =
CADJ SUBROUTINE mdsreadfieldyz INPUT = 1,2,3,4, 6,7
CADJ SUBROUTINE mdsreadfieldyz OUTPUT = 5
CADJ SUBROUTINE mdswritefieldyz INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mdswritefieldyz OUTPUT =
CADJ SUBROUTINE mdsreadfield_loc INPUT = 1,2,3,4, 6,7
CADJ SUBROUTINE mdsreadfield_loc OUTPUT = 5
CADJ SUBROUTINE mdsreadfield_loc DEPEND = 1,2,3,4,5,6,7
CADJ SUBROUTINE mdsreadfield_loc REQUIRED
CADJ SUBROUTINE mdswritefield_loc INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mdswritefield_loc OUTPUT =
CADJ SUBROUTINE mdsreadfieldxz_loc INPUT = 1,2,3,4, 6,7
CADJ SUBROUTINE mdsreadfieldxz_loc OUTPUT = 5
CADJ SUBROUTINE mdswritefieldxz_loc INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mdswritefieldxz_loc OUTPUT =
CADJ SUBROUTINE mdsreadfieldyz_loc INPUT = 1,2,3,4, 6,7
CADJ SUBROUTINE mdsreadfieldyz_loc OUTPUT = 5
CADJ SUBROUTINE mdswritefieldyz_loc INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE mdswritefieldyz_loc OUTPUT =
CADJ SUBROUTINE MDS_FACEF_READ_RS INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE MDS_FACEF_READ_RS OUTPUT = 4
CADJ SUBROUTINE MONITOR INPUT = 1,2,3
CADJ SUBROUTINE MONITOR OUTPUT =
CADJ SUBROUTINE MONITOR DEPEND = 1,2,3
CADJ SUBROUTINE MONITOR REQUIRED
CADJ SUBROUTINE MONITOR ACTIVE =
CADJ SUBROUTINE MONITOR INFLUENCED
CADJ SUBROUTINE MONITOR ADNAME = admonitor
CADJ SUBROUTINE MONITOR FTLNAME = g_monitor
CADJ SUBROUTINE MON_SET_PREF INPUT = 1,2
CADJ SUBROUTINE MON_SET_PREF OUTPUT =
CADJ SUBROUTINE MON_PRINTSTATS_RS INPUT = 1,2,3,4
CADJ SUBROUTINE MON_PRINTSTATS_RS OUTPUT =
CADJ SUBROUTINE set_write_global_fld INPUT = 1
CADJ SUBROUTINE set_write_global_fld OUTPUT =
CADJ SUBROUTINE write_fld_xy_rs INPUT = 1,2,3,4,5
CADJ SUBROUTINE write_fld_xy_rs OUTPUT =
CADJ SUBROUTINE write_fld_xy_rl INPUT = 1,2,3,4,5
CADJ SUBROUTINE write_fld_xy_rl OUTPUT =
CADJ SUBROUTINE write_fld_xyz_rs INPUT = 1,2,3,4,5
CADJ SUBROUTINE write_fld_xyz_rs OUTPUT =
CADJ SUBROUTINE write_fld_xyz_rl INPUT = 1,2,3,4,5
CADJ SUBROUTINE write_fld_xyz_rl OUTPUT =
CADJ SUBROUTINE write_local_rl INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE write_local_rl OUTPUT =
CADJ SUBROUTINE write_local_rs INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE write_local_rs OUTPUT =
CADJ SUBROUTINE set_write_global_rec INPUT = 1
CADJ SUBROUTINE set_write_global_rec OUTPUT =
CADJ SUBROUTINE write_rec_xy_rl INPUT = 1,2,3,4,5
CADJ SUBROUTINE write_rec_xy_rl OUTPUT =
CADJ SUBROUTINE write_rec_xyz_rs INPUT = 1,2,3,4,5
CADJ SUBROUTINE write_rec_xyz_rs OUTPUT =
CADJ SUBROUTINE write_rec_xyz_rl INPUT = 1,2,3,4,5
CADJ SUBROUTINE write_rec_xyz_rl OUTPUT =
CADJ SUBROUTINE write_rec_3d_rs INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE write_rec_3d_rs OUTPUT =
CADJ SUBROUTINE write_rec_3d_rl INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE write_rec_3d_rl OUTPUT =
CADJ SUBROUTINE write_rec_lev_rs INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE write_rec_lev_rs OUTPUT =
CADJ SUBROUTINE write_rec_lev_rl INPUT = 1,2,3,4,5,6,7,8,9
CADJ SUBROUTINE write_rec_lev_rl OUTPUT =
CADJ SUBROUTINE write_rec_xz_rs INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE write_rec_xz_rs OUTPUT =
CADJ SUBROUTINE write_rec_xz_rl INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE write_rec_xz_rl OUTPUT =
CADJ SUBROUTINE write_rec_yz_rs INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE write_rec_yz_rs OUTPUT =
CADJ SUBROUTINE write_rec_yz_rl INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE write_rec_yz_rl OUTPUT =
CADJ SUBROUTINE WRITE_GLVEC_RS INPUT = 1,2,3,4,5,6
CADJ SUBROUTINE WRITE_GLVEC_RS OUTPUT =
CADJ SUBROUTINE WRITE_GLVEC_RL INPUT = 1,2,3,4,5,6
CADJ SUBROUTINE WRITE_GLVEC_RL OUTPUT =
CADJ SUBROUTINE READ_MFLDS_CHECK INPUT = 2,3,4
CADJ SUBROUTINE READ_MFLDS_CHECK OUTPUT = 1,2
CADJ SUBROUTINE READ_MFLDS_INIT INPUT = 1
CADJ SUBROUTINE READ_MFLDS_INIT OUTPUT =
CADJ SUBROUTINE READ_MFLDS_SET INPUT = 1, 4,5,6
CADJ SUBROUTINE READ_MFLDS_SET OUTPUT = 2,3
CADJ SUBROUTINE READ_MFLDS_3D_RL INPUT = 1, 3,4,5,6,7
CADJ SUBROUTINE READ_MFLDS_3D_RL OUTPUT = 2,3
CADJ SUBROUTINE READ_MFLDS_LEV_RL INPUT = 1, 3,4,5,6,7,8,9
CADJ SUBROUTINE READ_MFLDS_LEV_RL OUTPUT = 2,3
CADJ SUBROUTINE BARRIER INPUT = 1
CADJ SUBROUTINE BARRIER OUTPUT =
CADJ SUBROUTINE BARRIER REQUIRED
CADJ SUBROUTINE BARRIER INFLUENCED
CADJ SUBROUTINE BARRIER ADNAME = BARRIER
CADJ SUBROUTINE BARRIER FTLNAME = BARRIER
CADJ SUBROUTINE BARRIER DEPEND = 1
CADJ SUBROUTINE FOOL_THE_COMPILER INPUT = 1
CADJ SUBROUTINE FOOL_THE_COMPILER OUTPUT =
CADJ SUBROUTINE FOOL_THE_COMPILER REQUIRED
CADJ SUBROUTINE FOOL_THE_COMPILER INFLUENCED
CADJ SUBROUTINE FOOL_THE_COMPILER ADNAME = FOOL_THE_COMPILER
CADJ SUBROUTINE FOOL_THE_COMPILER FTLNAME = FOOL_THE_COMPILER
CADJ SUBROUTINE FOOL_THE_COMPILER DEPEND = 1
CADJ SUBROUTINE MEMSYNC INPUT =
CADJ SUBROUTINE MEMSYNC OUTPUT =
CADJ SUBROUTINE MEMSYNC REQUIRED
CADJ SUBROUTINE MEMSYNC INFLUENCED
CADJ SUBROUTINE MEMSYNC ADNAME = MEMSYNC
CADJ SUBROUTINE MEMSYNC FTLNAME = MEMSYNC
CADJ SUBROUTINE MEMSYNC DEPEND =
CADJ SUBROUTINE BARRIER_INIT INPUT =
CADJ SUBROUTINE BARRIER_INIT OUTPUT =
CADJ SUBROUTINE BAR2 INPUT = 1
CADJ SUBROUTINE BAR2 OUTPUT =
CADJ SUBROUTINE BAR2_INIT INPUT = 1
CADJ SUBROUTINE BAR2_INIT OUTPUT =
CADJ SUBROUTINE BAR_CHECK INPUT = 1,2
CADJ SUBROUTINE BAR_CHECK OUTPUT =
CADJ SUBROUTINE CHECK_THREADS INPUT = 1
CADJ SUBROUTINE CHECK_THREADS OUTPUT =
CADJ SUBROUTINE EEDIE INPUT =
CADJ SUBROUTINE EEDIE OUTPUT =
CADJ SUBROUTINE ALL_PROC_DIE INPUT = 1
CADJ SUBROUTINE ALL_PROC_DIE OUTPUT =
CADJ FUNCTION TIMER_INDEX INPUT = 1,2,3,4
CADJ FUNCTION TIMER_INDEX OUTPUT =
CADJ SUBROUTINE TIMER_CONTROL INPUT = 1,2,3,4
CADJ SUBROUTINE TIMER_CONTROL OUTPUT =
CADJ SUBROUTINE TIMER_GET_TIME INPUT =
CADJ SUBROUTINE TIMER_GET_TIME OUTPUT = 1,2,3
CADJ SUBROUTINE TIMER_PRINTALL INPUT = 1
CADJ SUBROUTINE TIMER_PRINTALL OUTPUT =
CADJ SUBROUTINE TIMER_START INPUT = 1,2
CADJ SUBROUTINE TIMER_START OUTPUT =
CADJ SUBROUTINE TIMER_STOP INPUT = 1,2
CADJ SUBROUTINE TIMER_STOP OUTPUT =
CADJ SUBROUTINE PAPIF_flops INPUT =
CADJ SUBROUTINE PAPIF_flops OUTPUT = 1,2,3,4,5
CADJ SUBROUTINE PAPIF_flips INPUT =
CADJ SUBROUTINE PAPIF_flips OUTPUT = 1,2,3,4,5
CADJ SUBROUTINE PAPIF_ipc INPUT =
CADJ SUBROUTINE PAPIF_ipc OUTPUT = 1,2,3,4,5
CADJ FUNCTION PCLstart INPUT = 1,2,3,4
CADJ FUNCTION PCLstart OUTPUT =
CADJ FUNCTION PCLstop INPUT = 1,4
CADJ FUNCTION PCLstop OUTPUT = 2,3
CADJ SUBROUTINE DATE INPUT = 2
CADJ SUBROUTINE DATE OUTPUT = 1
CADJ SUBROUTINE LCASE INPUT = 1
CADJ SUBROUTINE LCASE OUTPUT = 1
CADJ SUBROUTINE UCASE INPUT = 1
CADJ SUBROUTINE UCASE OUTPUT = 1
CADJ SUBROUTINE MACHINE INPUT =
CADJ SUBROUTINE MACHINE OUTPUT = 1
CADJ FUNCTION IFNBLNK INPUT = 1
CADJ FUNCTION IFNBLNK OUTPUT =
CADJ FUNCTION ILNBLNK INPUT = 1
CADJ FUNCTION ILNBLNK OUTPUT =
CADJ FUNCTION IO_ERRCOUNT INPUT = 1
CADJ FUNCTION IO_ERRCOUNT OUTPUT =
CADJ SUBROUTINE READ_FIELD_XYZR8 INPUT = 2,3,4
CADJ SUBROUTINE READ_FIELD_XYZR8 OUTPUT = 1
CADJ SUBROUTINE WRITE_FIELD_XYZR8 INPUT = 1,2,3,4
CADJ SUBROUTINE WRITE_FIELD_XYZR8 OUTPUT =
CADJ SUBROUTINE PRINT_MESSAGE INPUT = 1,2,3,4
CADJ SUBROUTINE PRINT_MESSAGE OUTPUT =
CADJ SUBROUTINE PRINT_ERROR INPUT = 1,2
CADJ SUBROUTINE PRINT_ERROR OUTPUT =
CADJ SUBROUTINE PRINT_LIST_I INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE PRINT_LIST_I OUTPUT =
CADJ SUBROUTINE PRINT_LIST_L INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE PRINT_LIST_L OUTPUT =
CADJ SUBROUTINE PRINT_LIST_RL INPUT = 1,2,3,4,5,6,7
CADJ SUBROUTINE PRINT_LIST_RL OUTPUT =
CADJ SUBROUTINE PRINT_MAPRS INPUT = 1,2,3,4,5,6,7,8,9,10
CADJ SUBROUTINE PRINT_MAPRS INPUT += 11,12,13,14,15,16,17,18,19,20
CADJ SUBROUTINE PRINT_MAPRS INPUT += 21,22,23,24,25,26
CADJ SUBROUTINE PRINT_MAPRS OUTPUT =
CADJ SUBROUTINE PRINT_MAPRL INPUT = 1,2,3,4,5,6,7,8,9,10
CADJ SUBROUTINE PRINT_MAPRL INPUT += 11,12,13,14,15,16,17,18,19,20
CADJ SUBROUTINE PRINT_MAPRL INPUT += 21,22,23,24,25,26
CADJ SUBROUTINE PRINT_MAPRL OUTPUT =
CADJ SUBROUTINE NML_FILTER INPUT = 1,2,3
CADJ SUBROUTINE NML_FILTER OUTPUT =
CADJ SUBROUTINE mdsfindunit INPUT = 2
CADJ SUBROUTINE mdsfindunit OUTPUT = 1
CADJ SUBROUTINE mds_byteswapr8 INPUT = 1,2
CADJ SUBROUTINE mds_byteswapr8 OUTPUT = 2
CADJ SUBROUTINE mds_byteswapr4 INPUT = 1,2
CADJ SUBROUTINE mds_byteswapr4 OUTPUT = 2
CADJ FUNCTION MASTER_CPU_IO INPUT = 1
CADJ FUNCTION MASTER_CPU_IO OUTPUT =
CADJ FUNCTION MASTER_CPU_THREAD INPUT = 1
CADJ FUNCTION MASTER_CPU_THREAD OUTPUT =
CADJ SUBROUTINE OPEN_COPY_DATA_FILE INPUT = 1,2, 4
CADJ SUBROUTINE OPEN_COPY_DATA_FILE OUTPUT = 3
CADJ SUBROUTINE WRITE_1D_I INPUT = 1,2,3,4,5
CADJ SUBROUTINE WRITE_1D_I OUTPUT =
CADJ SUBROUTINE WRITE_1D_L INPUT = 1,2,3,4,5
CADJ SUBROUTINE WRITE_1D_L OUTPUT =
CADJ SUBROUTINE WRITE_1D_RL INPUT = 1,2,3,4,5
CADJ SUBROUTINE WRITE_1D_RL OUTPUT =
CADJ SUBROUTINE WRITE_0D_I INPUT = 1,2,3,4
CADJ SUBROUTINE WRITE_0D_I OUTPUT =
CADJ SUBROUTINE WRITE_0D_L INPUT = 1,2,3,4
CADJ SUBROUTINE WRITE_0D_L OUTPUT =
CADJ SUBROUTINE WRITE_0D_R4 INPUT = 1,2,3,4
CADJ SUBROUTINE WRITE_0D_R4 OUTPUT =
CADJ SUBROUTINE WRITE_0D_R8 INPUT = 1,2,3,4
CADJ SUBROUTINE WRITE_0D_R8 OUTPUT =
CADJ SUBROUTINE WRITE_0D_RS INPUT = 1,2,3,4
CADJ SUBROUTINE WRITE_0D_RS OUTPUT =
CADJ SUBROUTINE WRITE_0D_RL INPUT = 1,2,3,4
CADJ SUBROUTINE WRITE_0D_RL OUTPUT =
CADJ SUBROUTINE WRITE_0D_C INPUT = 1,2,3,4,5
CADJ SUBROUTINE WRITE_0D_C OUTPUT =
CADJ SUBROUTINE WRITE_COPY1D_R4 INPUT = 2,3,4,5,6
CADJ SUBROUTINE WRITE_COPY1D_R4 OUTPUT = 1
CADJ SUBROUTINE WRITE_COPY1D_R8 INPUT = 2,3,4,5,6
CADJ SUBROUTINE WRITE_COPY1D_R8 OUTPUT = 1
CADJ SUBROUTINE WRITE_COPY1D_RS INPUT = 2,3,4,5,6
CADJ SUBROUTINE WRITE_COPY1D_RS OUTPUT = 1
c$taf SUBROUTINE exch1_rl INPUT = 1,2,3,4,5,6,7,8,9,10
c$taf SUBROUTINE exch1_rl OUTPUT = 1
c$taf SUBROUTINE exch1_rl ACTIVE = 1
c$taf SUBROUTINE exch1_rl DEPEND = 2,3,4,5,6,7,8,9,10
c$taf SUBROUTINE exch1_rl ADNAME = exch1_rl_ad
c$taf SUBROUTINE exch1_rl FTLNAME = exch1_rl
c$taf SUBROUTINE exch1_rs INPUT = 1,2,3,4,5,6,7,8,9,10
c$taf SUBROUTINE exch1_rs OUTPUT = 1
c$taf SUBROUTINE exch1_rs ACTIVE = 1
c$taf SUBROUTINE exch1_rs DEPEND = 2,3,4,5,6,7,8,9,10
c$taf SUBROUTINE exch1_rs ADNAME = exch1_rs_ad
c$taf SUBROUTINE exch1_rs FTLNAME = exch1_rs
c$taf SUBROUTINE exch1_rl_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_rl_cube OUTPUT = 1
c$taf SUBROUTINE exch1_rl_cube ACTIVE = 1
c$taf SUBROUTINE exch1_rl_cube DEPEND = 2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_rl_cube ADNAME = exch1_rl_cube_ad
c$taf SUBROUTINE exch1_rl_cube FTLNAME = exch1_rl_cube
c$taf SUBROUTINE exch1_rs_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_rs_cube OUTPUT = 1
c$taf SUBROUTINE exch1_rs_cube ACTIVE = 1
c$taf SUBROUTINE exch1_rs_cube DEPEND = 2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_rs_cube ADNAME = exch1_rs_cube_ad
c$taf SUBROUTINE exch1_rs_cube FTLNAME = exch1_rs_cube
c$taf SUBROUTINE exch1_z_rl_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_z_rl_cube OUTPUT = 1
c$taf SUBROUTINE exch1_z_rl_cube ACTIVE = 1
c$taf SUBROUTINE exch1_z_rl_cube DEPEND = 2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_z_rl_cube ADNAME = exch1_rl_cube_ad
c$taf SUBROUTINE exch1_z_rl_cube FTLNAME = exch1_rl_cube
c$taf SUBROUTINE exch1_z_rs_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_z_rs_cube OUTPUT = 1
c$taf SUBROUTINE exch1_z_rs_cube ACTIVE = 1
c$taf SUBROUTINE exch1_z_rs_cube DEPEND = 2,3,4,5,6,7,8,9,10,11
c$taf SUBROUTINE exch1_z_rs_cube ADNAME = exch1_rs_cube_ad
c$taf SUBROUTINE exch1_z_rs_cube FTLNAME = exch1_rs_cube
c$taf SUBROUTINE exch1_uv_rl_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rl_cube OUTPUT = 1,2
c$taf SUBROUTINE exch1_uv_rl_cube ACTIVE = 1,2
c$taf SUBROUTINE exch1_uv_rl_cube DEPEND = 3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rl_cube ADNAME = exch1_rl_cube_ad
c$taf SUBROUTINE exch1_uv_rl_cube FTLNAME = exch1_rl_cube
c$taf SUBROUTINE exch1_uv_rs_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rs_cube OUTPUT = 1,2
c$taf SUBROUTINE exch1_uv_rs_cube ACTIVE = 1,2
c$taf SUBROUTINE exch1_uv_rs_cube DEPEND = 3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rs_cube ADNAME = exch1_rs_cube_ad
c$taf SUBROUTINE exch1_uv_rs_cube FTLNAME = exch1_rs_cube
c$taf SUBROUTINE exch1_uv_rl_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rl_cube OUTPUT = 1,2
c$taf SUBROUTINE exch1_uv_rl_cube ACTIVE = 1,2
c$taf SUBROUTINE exch1_uv_rl_cube DEPEND = 3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rl_cube ADNAME = exch1_rl_cube_ad
c$taf SUBROUTINE exch1_uv_rl_cube FTLNAME = exch1_rl_cube
c$taf SUBROUTINE exch1_uv_rs_cube INPUT = 1,2,3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rs_cube OUTPUT = 1,2
c$taf SUBROUTINE exch1_uv_rs_cube ACTIVE = 1,2
c$taf SUBROUTINE exch1_uv_rs_cube DEPEND = 3,4,5,6,7,8,9,10,11,12
c$taf SUBROUTINE exch1_uv_rs_cube ADNAME = exch1_rs_cube_ad
c$taf SUBROUTINE exch1_uv_rs_cube FTLNAME = exch1_rs_cube
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE COST_TEMP( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
common /ctrl_weights_dummy_r/
& wtheta, wsalt,
& wuvvel, wetan,
& wdiffkr, wkapgm, wkapredi,
& wedtaux, wedtauy
Real*8 wtheta ( nr,nsx,nsy )
Real*8 wsalt ( nr,nsx,nsy )
Real*8 wuvvel ( nr,nsx,nsy )
Real*8 wetan ( snx,sny,nsx,nsy )
Real*8 wdiffkr ( nr,nsx,nsy )
Real*8 wkapgm ( nr,nsx,nsy )
Real*8 wkapredi ( nr,nsx,nsy )
Real*8 wedtaux ( nr,nsx,nsy )
Real*8 wedtauy ( nr,nsx,nsy )
common /cost_weights_r/ whfluxm
Real*8 whfluxm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER myThid
INTEGER i, j, k
INTEGER bi, bj
INTEGER Nk
Real*8 locfc,tmp
Real*8 thetalev(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Nk = 2
CALL READ_FLD_XYZ_RL('lev_t_an.bin',' ',thetalev,0,myThid)
tmp = 0.d0
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO k=1, Nk
DO j=1,sNy
DO i=1,sNx
tmp = tmp + maskC(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
CALL GLOBAL_SUM_R8 ( tmp , myThid )
IF ( tmp.GT.0. ) tmp = 1.d0 / tmp
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
ikey = (act1 + 1) + act2*max1
& + act3*max1*max2
locfc = 0.d0
DO k=1,Nk
DO j=1,sNy
DO i=1,sNx
locfc = locfc + tmp*maskC(i,j,k,bi,bj)*
& wtheta(k,bi,bj)*
& ( cMeanTheta(i,j,k,bi,bj) - thetalev(i,j,k,bi,bj) )**2
ENDDO
ENDDO
ENDDO
objf_temp_tut(bi,bj) = locfc
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE COST_HFLUX( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
common /ctrl_weights_dummy_r/
& wtheta, wsalt,
& wuvvel, wetan,
& wdiffkr, wkapgm, wkapredi,
& wedtaux, wedtauy
Real*8 wtheta ( nr,nsx,nsy )
Real*8 wsalt ( nr,nsx,nsy )
Real*8 wuvvel ( nr,nsx,nsy )
Real*8 wetan ( snx,sny,nsx,nsy )
Real*8 wdiffkr ( nr,nsx,nsy )
Real*8 wkapgm ( nr,nsx,nsy )
Real*8 wkapredi ( nr,nsx,nsy )
Real*8 wedtaux ( nr,nsx,nsy )
Real*8 wedtauy ( nr,nsx,nsy )
common /cost_weights_r/ whfluxm
Real*8 whfluxm (1-olx:snx+olx,1-oly:sny+oly, nsx,nsy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
integer myThid
integer i, j
integer bi, bj
Real*8 locfc,tmpC
tmpC = 0.d0
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
do j=1,sNy
do i=1,sNx
tmpC = tmpC + maskC(i,j,1,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
CALL GLOBAL_SUM_R8 ( tmpC , myThid )
IF ( tmpC.GT.0. ) tmpC = 1.d0 / tmpC
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
ikey = (act1 + 1) + act2*max1
& + act3*max1*max2
locfc = 0.d0
DO j=1,sNy
DO i=1,sNx
locfc = locfc + tmpC*maskC(i,j,1,bi,bj)*
& whfluxm(i,j,bi,bj)*
& (
& Qnetm(i,j,bi,bj)
& )**2
ENDDO
ENDDO
objf_hflux_tut(bi,bj) = locfc
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
subroutine autodiff_store( mythid )
c
c
c
implicit none
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
integer ilev_1
integer ilev_2
integer ilev_3
integer ilev_4
integer max_lev2
integer max_lev3
integer max_lev4
integer NDV3D, NDV2D, NEXF1, NEXF2, NCTRL1, NOB, NSI
PARAMETER (NDV3D = 12)
PARAMETER (NDV2D = 23)
PARAMETER (NEXF1 = 21)
PARAMETER (NEXF2 = 18)
PARAMETER (NCTRL1 = 18)
PARAMETER (NOB = 18)
PARAMETER (NSI = 19)
Real*8 StoreDynVars3D
& (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,NDV3D)
Real*8 StoreDynVars2D
& (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NDV2D)
Real*8 StoreEXF1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NEXF1)
Real*8 StoreEXF2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NEXF2)
Real*8 StoreCTRLS1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NCTRL1)
Real*8 StoreOBCSN(1-Olx:sNx+Olx,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSS(1-Olx:sNx+Olx,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSE(1-OLy:sNy+OLy,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSW(1-OLy:sNy+OLy,Nr,nSx,nSy,NOB)
Real*8 StoreSEAICE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NSI)
COMMON /AUTODIFF_STORE_DYN/
& StoreDynVars3D,
& StoreDynVars2D
COMMON /AUTODIFF_STORE_EXF_FLUX/
& StoreEXF1
COMMON /AUTODIFF_STORE_EXF_ATMOS/
& StoreEXF2
COMMON /AUTODIFF_STORE_CTRL/
& StoreCTRLS1
COMMON /AUTODIFF_STORE_OBCSN/
& StoreOBCSN
COMMON /AUTODIFF_STORE_OBCSS/
& StoreOBCSS
COMMON /AUTODIFF_STORE_OBCSE/
& StoreOBCSE
COMMON /AUTODIFF_STORE_OBCSW/
& StoreOBCSW
COMMON /AUTODIFF_STORE_SEAICE/
& StoreSEAICE
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
integer mythid
integer bi,bj
integer I,J,K
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_ENTER('AUTODIFF_STORE',myThid)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
StoreDynVars2D(I,J,bi,bj,1) = etan(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,2) = surfaceforcingTice(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,3) = taux0(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,4) = taux1(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,5) = tauy0(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,6) = tauy1(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,7) = qnet0(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,8) = qnet1(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,9) = empmr0(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,10) = empmr1(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,11) = sst0(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,12) = sst1(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,13) = sss0(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,14) = sss1(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,15) = saltflux0(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,16) = saltflux1(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,17) = 0.
StoreDynVars2D(I,J,bi,bj,18) = 0.
StoreDynVars2D(I,J,bi,bj,19) = 0.
StoreDynVars2D(I,J,bi,bj,20) = 0.
StoreDynVars2D(I,J,bi,bj,21) = etaH(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,22) = dEtaHdt(I,J,bi,bj)
StoreDynVars2D(I,J,bi,bj,23) = PmEpR(I,J,bi,bj)
ENDDO
ENDDO
DO K=1,Nr
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
StoreDynVars3D(I,J,K,bi,bj,1) = gs(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,2) = gt(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,3) = gtnm1(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,4) = gsnm1(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,5) = gunm1(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,6) = gvnm1(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,7) = theta(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,8) = salt(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,9) = uvel(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,10) = vvel(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,11) = wvel(I,J,K,bi,bj)
StoreDynVars3D(I,J,K,bi,bj,12) = totphihyd(I,J,K,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE('AUTODIFF_STORE',myThid)
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
subroutine autodiff_restore( mythid )
c
c
c
implicit none
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
integer ilev_1
integer ilev_2
integer ilev_3
integer ilev_4
integer max_lev2
integer max_lev3
integer max_lev4
integer NDV3D, NDV2D, NEXF1, NEXF2, NCTRL1, NOB, NSI
PARAMETER (NDV3D = 12)
PARAMETER (NDV2D = 23)
PARAMETER (NEXF1 = 21)
PARAMETER (NEXF2 = 18)
PARAMETER (NCTRL1 = 18)
PARAMETER (NOB = 18)
PARAMETER (NSI = 19)
Real*8 StoreDynVars3D
& (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,NDV3D)
Real*8 StoreDynVars2D
& (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NDV2D)
Real*8 StoreEXF1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NEXF1)
Real*8 StoreEXF2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NEXF2)
Real*8 StoreCTRLS1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NCTRL1)
Real*8 StoreOBCSN(1-Olx:sNx+Olx,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSS(1-Olx:sNx+Olx,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSE(1-OLy:sNy+OLy,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSW(1-OLy:sNy+OLy,Nr,nSx,nSy,NOB)
Real*8 StoreSEAICE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NSI)
COMMON /AUTODIFF_STORE_DYN/
& StoreDynVars3D,
& StoreDynVars2D
COMMON /AUTODIFF_STORE_EXF_FLUX/
& StoreEXF1
COMMON /AUTODIFF_STORE_EXF_ATMOS/
& StoreEXF2
COMMON /AUTODIFF_STORE_CTRL/
& StoreCTRLS1
COMMON /AUTODIFF_STORE_OBCSN/
& StoreOBCSN
COMMON /AUTODIFF_STORE_OBCSS/
& StoreOBCSS
COMMON /AUTODIFF_STORE_OBCSE/
& StoreOBCSE
COMMON /AUTODIFF_STORE_OBCSW/
& StoreOBCSW
COMMON /AUTODIFF_STORE_SEAICE/
& StoreSEAICE
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
integer mythid
integer bi,bj
integer I,J,K
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_ENTER('AUTODIFF_RESTORE',myThid)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
etan(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,1)
surfaceforcingTice(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,2)
taux0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,3)
taux1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,4)
tauy0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,5)
tauy1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,6)
qnet0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,7)
qnet1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,8)
empmr0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,9)
empmr1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,10)
sst0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,11)
sst1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,12)
sss0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,13)
sss1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,14)
saltflux0(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,15)
saltflux1(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,16)
etaH(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,21)
dEtaHdt(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,22)
PmEpR(I,J,bi,bj) = StoreDynVars2D(I,J,bi,bj,23)
ENDDO
ENDDO
DO K=1,Nr
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
gs(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,1)
gt(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,2)
gtnm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,3)
gsnm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,4)
gunm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,5)
gvnm1(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,6)
theta(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,7)
salt(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,8)
uvel(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,9)
vvel(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,10)
wvel(I,J,K,bi,bj) = StoreDynVars3D(I,J,K,bi,bj,11)
totphihyd(I,J,K,bi,bj)= StoreDynVars3D(I,J,K,bi,bj,12)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE('AUTODIFF_RESTORE',myThid)
return
end
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CD_CODE_SCHEME(
I bi,bj,k, dPhiHydX,dPhiHydY, guFld,gvFld,
O guCor,gvCor,
I myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 guFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 gvFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 guCor(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 gvCor(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER i,j
Real*8 pF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 aF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 ab15,ab05
Real*8 phxFac, phyFac
INTEGER iMin,iMax, jMin,jMax
PARAMETER( iMin = 1-Olx+1 , iMax = sNx+Olx-1 )
PARAMETER( jMin = 1-Oly+1 , jMax = sNy+Oly-1 )
ab15 = 1.5d0 + epsAB_CD
ab05 = -0.5d0 - epsAB_CD
IF (staggerTimeStep) THEN
phxFac = pfFacMom
phyFac = pfFacMom
ELSE
phxFac = 0.
phyFac = 0.
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
pf(i,j) = Bo_surf(i,j,bi,bj)
& *( ab15*etaN(i,j,bi,bj) + ab05*etaNm1(i,j,bi,bj) )
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
af(i,j) =
& ( gvFld(i,j)
& -( recip_dyC(i,j,bi,bj)*(pf(i,j)-pf(i,j-1))
& +phyFac*dPhiHydY(i,j) )
& )*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
vf(i,j) =
& ( (af(i,j)+af(i-1,j+1))
& +(af(i-1,j)+af(i,j+1)) )*0.25d0
& *maskW(i,j,k,bi,bj)
& -( fCori( i, j,bi,bj)
& +fCori(i-1,j,bi,bj) )*0.5d0
& *( ab15*uVel(i,j,k,bi,bj) + ab05*uNM1(i,j,k,bi,bj) )
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
vVelD(i,j,k,bi,bj) = vVelD(i,j,k,bi,bj) + deltaTmom*vf(i,j)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
vVelD(i,j,k,bi,bj) = ( rCD*vVelD(i,j,k,bi,bj)
& +(1.d0 - rCD)
& *( ab15*(
& (vVel(i,j,k,bi,bj)+vVel(i-1,j+1,k,bi,bj))
& +(vVel(i-1,j,k,bi,bj)+vVel(i,j+1,k,bi,bj))
& )*0.25d0
& +ab05*(
& (vNM1(i,j,k,bi,bj)+vNM1(i-1,j+1,k,bi,bj))
& +(vNM1(i-1,j,k,bi,bj)+vNM1(i,j+1,k,bi,bj))
& )*0.25d0
& ) )*maskW(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
guCor(i,j) =
& ( fCori( i, j,bi,bj)
& +fCori(i-1,j,bi,bj) )*0.5d0
& *vVelD(i,j,k,bi,bj)*cfFacMom
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx
af(i,j) =
& ( guFld(i,j)
& -( recip_dxC(i,j,bi,bj)*(pf(i,j)-pf(i-1,j))
& +phxFac*dPhiHydX(i,j) )
& )*maskW(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
vf(i,j) =
& ( (af(i,j)+af(i+1,j-1))
& +(af(i+1,j)+af(i,j-1)) )*0.25d0
& *maskS(i,j,k,bi,bj)
& +( fCori(i, j, bi,bj)
& +fCori(i,j-1,bi,bj) )*0.5d0
& *( ab15*vVel(i,j,k,bi,bj) + ab05*vNM1(i,j,k,bi,bj) )
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
uVelD(i,j,k,bi,bj) = uVelD(i,j,k,bi,bj) + deltaTmom*vf(i,j)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
uVelD(i,j,k,bi,bj) = ( rCD*uVelD(i,j,k,bi,bj)
& +(1.d0 - rCD)
& *( ab15*(
& (uVel(i,j,k,bi,bj)+uVel(i+1,j-1,k,bi,bj))
& +(uVel(i,j-1,k,bi,bj)+uVel(i+1,j,k,bi,bj))
& )*0.25d0
& +ab05*(
& (uNM1(i,j,k,bi,bj)+uNM1(i+1,j-1,k,bi,bj))
& +(uNM1(i,j-1,k,bi,bj)+uNM1(i+1,j,k,bi,bj))
& )*0.25d0
& ) )*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
gvCor(i,j) =
& -( fCori(i, j, bi,bj)
& +fCori(i,j-1,bi,bj) )*0.5d0
& *uVelD(i,j,k,bi,bj)*cfFacMom
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
uNM1(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)
vNM1(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CD_CODE_INI_VARS( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER I, J, K
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO K=1,Nr
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
uNM1(I,J,K,bi,bj)=0.d0
vNM1(I,J,K,bi,bj)=0.d0
uVeld(I,J,K,bi,bj)=0.d0
vVeld(I,J,K,bi,bj)=0.d0
ENDDO
ENDDO
ENDDO
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
etaNm1(I,J,bi,bj)=0.d0
ENDDO
ENDDO
ENDDO
ENDDO
IF ( nIter0.NE.0 .OR. pickupSuff.NE.' ' ) THEN
CALL CD_CODE_READ_PICKUP( nIter0, myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
subroutine cost_accumulate_mean( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer bi, bj
integer myThid
Real*8 thetaRef
integer i, j, k
integer ig, jg
integer itlo,ithi
integer jtlo,jthi
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
do bj = jtlo,jthi
do bi = itlo,ithi
do k = 1, Nr
do j=1,sNy
do i=1,sNx
cMeanTheta(i,j,k,bi,bj) = cMeanTheta(i,j,k,bi,bj)
& + theta(i,j,k,bi,bj)
& /lastinterval*deltaTClock
cMeanUVel(i,j,k,bi,bj) = cMeanUVel(i,j,k,bi,bj)
& + uVel(i,j,k,bi,bj)
& /lastinterval*deltaTClock
cMeanVVel(i,j,k,bi,bj) = cMeanVVel(i,j,k,bi,bj)
& + vVel(i,j,k,bi,bj)
& /lastinterval*deltaTClock
cMeanThetaUVel(i,j,k,bi,bj) =
& cMeanThetaUVel(i,j,k,bi,bj)
& + (theta(i,j,k,bi,bj)+theta(i-1,j,k,bi,bj))
& /2.*uvel(i,j,k,bi,bj)
& *maskW(i,j,k,bi,bj)*maskC(i,j,k,bi,bj)
& /lastinterval*deltaTClock
cMeanThetaVVel(i,j,k,bi,bj) =
& cMeanThetaVVel(i,j,k,bi,bj)
& + (theta(i,j,k,bi,bj)+theta(i,j-1,k,bi,bj))
& /2.*vvel(i,j,k,bi,bj)
& *maskS(i,j,k,bi,bj)*maskC(i,j,k,bi,bj)
& /lastinterval*deltaTClock
end do
end do
end do
end do
end do
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine cost_final( mythid )
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
integer mythid
integer i,j,k
integer bi,bj
integer itlo,ithi
integer jtlo,jthi
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
CALL COST_HFLUX (myThid)
CALL COST_TEMP (myThid)
do bj = jtlo,jthi
do bi = itlo,ithi
write(standardmessageunit,'(A,D22.15)')
& ' --> objf_test(bi,bj) = ', objf_test(bi,bj)
write(standardmessageunit,'(A,D22.15)')
& ' --> objf_tracer(bi,bj) = ', objf_tracer(bi,bj)
write(standardmessageunit,'(A,D22.15)')
& ' --> objf_atl(bi,bj) = ', objf_atl(bi,bj)
write(standardmessageunit,'(A,D22.15)')
& ' --> objf_temp_tut(bi,bj) = ', objf_temp_tut(bi,bj)
write(standardmessageunit,'(A,D22.15)')
& ' --> objf_hflux_tut(bi,bj) = ', objf_hflux_tut(bi,bj)
fc = fc
& + mult_test * objf_test(bi,bj)
& + mult_tracer * objf_tracer(bi,bj)
& + mult_atl * objf_atl(bi,bj)
& + mult_temp_tut * objf_temp_tut(bi,bj)
& + mult_hflux_tut * objf_hflux_tut(bi,bj)
enddo
enddo
write(standardmessageunit,'(A,D22.15)') ' local fc = ', fc
CALL GLOBAL_SUM_R8 ( fc , myThid )
write(standardmessageunit,'(A,D22.15)') ' global fc = ', fc
CALL TURNOFF_MODEL_IO( 0, myThid )
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine cost_init_varia( mythid )
c
c
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer mythid
integer i,j,k
integer bi,bj
integer itlo,ithi
integer jtlo,jthi
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
do bj = jtlo,jthi
do bi = itlo,ithi
objf_atl(bi,bj) = 0.d0
objf_test(bi,bj) = 0.d0
objf_tracer(bi,bj) = 0.d0
c
do k=1,nr
do j=1,sNy
do i=1,sNx
cMeanTheta(i,j,k,bi,bj) = 0.d0
cMeanUVel(i,j,k,bi,bj) = 0.d0
cMeanVVel(i,j,k,bi,bj) = 0.d0
cMeanThetaUVel(i,j,k,bi,bj) = 0.d0
cMeanThetaVVel(i,j,k,bi,bj) = 0.d0
end do
end do
end do
c
enddo
enddo
IF ( mythid .EQ. 1 ) THEN
fc = 0.d0
ENDIF
CALL BARRIER(myThid)
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
CBOI
C
c
CEOI
subroutine cost_tile( mytime, myiter, myThid )
implicit none
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
Real*8 myTime
integer myiter
integer myThid
integer bi, bj
CADJ STORE theta = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE uvel, vvel = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
IF ( myTime .GT. (EndTime - lastinterval) ) THEN
CALL COST_ACCUMULATE_MEAN (myThid)
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
subroutine cost_test( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer bi, bj
integer myThid
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine cost_tracer( bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer bi, bj
integer myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine cost_atlantic_heat( myThid )
implicit none
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer myThid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine cost_vector( myThid )
implicit none
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer myThid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine cost_state_final( myThid )
implicit none
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer myThid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_depth_ini( mythid )
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
integer mythid
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_get_gen(
I xx_gen_file, xx_genstartdate, xx_genperiod,
I genmask, genfld, xx_gen0, xx_gen1, xx_gen_dummy,
I xx_gen_remo_intercept, xx_gen_remo_slope,
I mytime, myiter, mythid
& )
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
character*(80) fnamegeneric
character*(MAX_LEN_FNAM) xx_gen_file
integer xx_genstartdate(4)
Real*8 xx_genperiod
Real*8 genmask(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
Real*8 genfld(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 xx_gen0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 xx_gen1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 xx_gen_dummy
Real*8 xx_gen_remo_intercept
Real*8 xx_gen_remo_slope
Real*8 mytime
integer myiter
integer mythid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_get_gen_rec(
I xx_genstartdate,
I xx_genperiod,
O fac,
O first,
O changed,
O count0,
O count1,
I mytime,
I myiter,
I mythid
& )
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
integer xx_genstartdate(4)
Real*8 xx_genperiod
Real*8 fac
logical first
logical changed
integer count0
integer count1
Real*8 mytime
integer myiter
integer mythid
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_init_variables( mythid )
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
integer mythid
integer bi,bj
integer i,j,k
integer itlo,ithi
integer jtlo,jthi
integer jmin,jmax
integer imin,imax
integer ntmp
integer ivarindex
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1-oly
jmax = sny+oly
imin = 1-olx
imax = snx+olx
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_map_ini( mythid )
implicit none
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
integer mythid
integer bi,bj
integer i,j,k
integer itlo,ithi
integer jtlo,jthi
integer jmin,jmax
integer imin,imax
integer il
logical equal
logical doglobalread
logical ladinit
character*( 80) fnamegeneric
Real*8 fac
Real*8 tmptest
integer ilnblnk
external ilnblnk
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1
jmax = sny
imin = 1
imax = snx
doglobalread = .false.
ladinit = .false.
equal = .true.
if ( equal ) then
fac = 1.d0
else
fac = 0.d0
endif
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_map_ini_ecco( mythid )
c
c
c
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
integer mythid
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_map_ini_gen3D(xxFileCur, wFileCur, xxDummyCur,
& boundsVec, paramFld3d, maskFld3d, paramSmooth, mythid )
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
integer mythid
character*(*) wFileCur,xxFileCur
Real*8 boundsVec(5),tmpMax,xxDummyCur
Real*8 wFld3d(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
Real*8 xxFld3d(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
Real*8 paramFld3d(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
Real*8 maskFld3d(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer paramSmooth
integer bi,bj
integer i,j,k
integer itlo,ithi
integer jtlo,jthi
integer jmin,jmax
integer imin,imax
integer il
logical doglobalread
logical ladinit
character*( 80) fnamegeneric
integer ilnblnk
external ilnblnk
act3 = myThid - 1
max3 = nTx*nTy
act4 = 0
ikey = (act3 + 1) + act4*max3
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1
jmax = sny
imin = 1
imax = snx
doglobalread = .false.
ladinit = .false.
call mdsreadfield(wFileCur,32,'RL',nR,wFld3d,1,mythid)
CALL EXCH_XYZ_RL ( wFld3d, mythid )
il=ilnblnk( xxFileCur )
write(fnamegeneric(1:80),'(2a,i10.10)')
& xxFileCur(1:il),'.',optimcycle
call active_read_xyz( fnamegeneric, xxFld3d, 1,
& doglobalread, ladinit, optimcycle, mythid, xxDummyCur )
if ( boundsVec(5).GT.0.) then
do bj = jtlo,jthi
do bi = itlo,ithi
do k = 1,nr
do j = jmin,jmax
do i = imin,imax
if ( (maskFld3d(i,j,k,bi,bj).NE.0.).AND.
& (wFld3d(i,j,k,bi,bj).GT.0.) ) then
tmpMax=boundsVec(5)/sqrt(wFld3d(i,j,k,bi,bj))
if ( abs(xxFld3d(i,j,k,bi,bj)).GT.tmpMax ) then
xxFld3d(i,j,k,bi,bj)=sign(tmpMax,xxFld3d(i,j,k,bi,bj))
else
xxFld3d(i,j,k,bi,bj)=xxFld3d(i,j,k,bi,bj)
endif
endif
enddo
enddo
enddo
enddo
enddo
endif
do bj = jtlo,jthi
do bi = itlo,ithi
do k = 1,nr
do j = jmin,jmax
do i = imin,imax
paramFld3d(i,j,k,bi,bj) = paramFld3d(i,j,k,bi,bj)
& + xxFld3d(i,j,k,bi,bj)
enddo
enddo
enddo
enddo
enddo
CALL CTRL_BOUND_3D(paramFld3d,maskFld3d,boundsVec,myThid)
end
subroutine ctrl_map_ini_gen2D(xxFileCur, wFileCur, xxDummyCur,
& boundsVec, paramFld2d, maskFld3d, paramSmooth, mythid )
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
integer mythid
character*(*) wFileCur,xxFileCur
Real*8 boundsVec(5),tmpMax,xxDummyCur
Real*8 wFld2d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 xxFld2d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 paramFld2d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 maskFld3d(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer paramSmooth
integer bi,bj
integer i,j,k
integer itlo,ithi
integer jtlo,jthi
integer jmin,jmax
integer imin,imax
integer il
logical doglobalread
logical ladinit
character*( 80) fnamegeneric
integer ilnblnk
external ilnblnk
act3 = myThid - 1
max3 = nTx*nTy
act4 = 0
ikey = (act3 + 1) + act4*max3
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1
jmax = sny
imin = 1
imax = snx
doglobalread = .false.
ladinit = .false.
call mdsreadfield(wFileCur,32,'RL',1,wFld2d,1,mythid)
CALL EXCH_XY_RL ( wFld2d, mythid )
il=ilnblnk( xxFileCur )
write(fnamegeneric(1:80),'(2a,i10.10)')
& xxFileCur(1:il),'.',optimcycle
call active_read_xy( fnamegeneric, xxFld2d, 1,
& doglobalread, ladinit, optimcycle, mythid, xxDummyCur )
if ( boundsVec(5).GT.0.) then
do bj = jtlo,jthi
do bi = itlo,ithi
do j = jmin,jmax
do i = imin,imax
if ( (maskFld3d(i,j,1,bi,bj).NE.0.).AND.
& (wFld2d(i,j,bi,bj).GT.0.) ) then
tmpMax=boundsVec(5)/sqrt(wFld2d(i,j,bi,bj))
if ( abs(xxFld2d(i,j,bi,bj)).GT.tmpMax ) then
xxFld2d(i,j,bi,bj)=sign(tmpMax,xxFld2d(i,j,bi,bj))
else
xxFld2d(i,j,bi,bj)=xxFld2d(i,j,bi,bj)
endif
endif
enddo
enddo
enddo
enddo
endif
do bj = jtlo,jthi
do bi = itlo,ithi
do j = jmin,jmax
do i = imin,imax
paramFld2d(i,j,bi,bj) = paramFld2d(i,j,bi,bj)
& + xxFld2d(i,j,bi,bj)
enddo
enddo
enddo
enddo
CALL CTRL_BOUND_2D(paramFld2d,maskFld3d,boundsVec,myThid)
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE CTRL_MAP_FORCING(myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
INTEGER myThid
integer bi,bj
integer i,j,k
integer itlo,ithi
integer jtlo,jthi
integer jmin,jmax
integer imin,imax
integer il
logical equal
logical doglobalread
logical ladinit
character*( 80) fnametauu
character*( 80) fnametauv
character*( 80) fnamesflux
character*( 80) fnamehflux
character*( 80) fnamesss
character*( 80) fnamesst
cHFLUXM_CONTROL
character*( 80) fnamehfluxm
cHFLUXM_CONTROL
integer ilnblnk
external ilnblnk
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1
jmax = sny
imin = 1
imax = snx
doglobalread = .false.
ladinit = .false.
il=ilnblnk( xx_hfluxm_file )
write(fnamehfluxm(1:80),'(2a,i10.10)')
& xx_hfluxm_file(1:il),'.',optimcycle
call active_read_xy ( fnamehfluxm, tmpfld2d, 1,
& doglobalread, ladinit, optimcycle,
& mythid, xx_hfluxm_dummy )
do bj = jtlo,jthi
do bi = itlo,ithi
do j = jmin,jmax
do i = imin,imax
Qnetm(i,j,bi,bj) = Qnetm(i,j,bi,bj) + tmpfld2d(i,j,bi,bj)
enddo
enddo
enddo
enddo
CALL EXCH_XY_RS ( Qnetm, myThid )
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
subroutine ctrl_smooth (
U fld ,mask)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
integer k, bi, bj
integer itlo,ithi
integer jtlo,jthi
Real*8 fld( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy ,nSx,nSy)
Real*8 mask( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy,nr,nSx,nSy )
integer i, j, im1, ip1, jm1, jp1
Real*8 tempVar
Real*8 fld_tmp( 1-OLx:sNx+OLx, 1-OLy:sNy+OLy )
integer imin , imax , jmin , jmax
parameter(imin=2-OLx, imax=sNx+OLx-1, jmin=2-OLy, jmax=sNy+OLy-1)
Real*8 p0 , p5 , p25 , p125 , p0625
parameter( p0=0.0, p5=0.5, p25=0.25, p125=0.125, p0625=0.0625 )
jtlo = 1
jthi = nsy
itlo = 1
ithi = nsx
k=1
do bj = jtlo,jthi
do bi = itlo,ithi
DO j = jmin, jmax
jm1 = j-1
jp1 = j+1
DO i = imin, imax
im1 = i-1
ip1 = i+1
tempVar =
& p25 * mask(i ,j ,k,bi,bj) +
& p125 * ( mask(im1,j ,k,bi,bj) +
& mask(ip1,j ,k,bi,bj) +
& mask(i ,jm1,k,bi,bj) +
& mask(i ,jp1,k,bi,bj) ) +
& p0625 * ( mask(im1,jm1,k,bi,bj) +
& mask(im1,jp1,k,bi,bj) +
& mask(ip1,jm1,k,bi,bj) +
& mask(ip1,jp1,k,bi,bj) )
IF ( tempVar .GE. p25 ) THEN
fld_tmp(i,j) = (
& p25 * fld(i ,j,bi,bj )*mask(i ,j ,k,bi,bj) +
& p125 *(fld(im1,j ,bi,bj )*mask(im1,j ,k,bi,bj) +
& fld(ip1,j ,bi,bj )*mask(ip1,j ,k,bi,bj) +
& fld(i ,jm1,bi,bj)*mask(i ,jm1,k,bi,bj) +
& fld(i ,jp1,bi,bj)*mask(i ,jp1,k,bi,bj))+
& p0625*(fld(im1,jm1,bi,bj)*mask(im1,jm1,k,bi,bj) +
& fld(im1,jp1,bi,bj)*mask(im1,jp1,k,bi,bj) +
& fld(ip1,jm1,bi,bj)*mask(ip1,jm1,k,bi,bj) +
& fld(ip1,jp1,bi,bj)*mask(ip1,jp1,k,bi,bj)))
& / tempVar
ELSE
fld_tmp(i,j) = fld(i,j,bi,bj)
ENDIF
ENDDO
ENDDO
DO j = jmin, jmax
DO i = imin, imax
fld(i,j,bi,bj) = fld_tmp(i,j)
ENDDO
ENDDO
ENDDO
ENDDO
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_getobcse(
I mytime,
I myiter,
I mythid
& )
c
c
c
implicit none
Real*8 mytime
integer myiter
integer mythid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_getobcsn(
I mytime,
I myiter,
I mythid
& )
c
c
c
implicit none
Real*8 mytime
integer myiter
integer mythid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_getobcss(
I mytime,
I myiter,
I mythid
& )
c
c
c
c
implicit none
Real*8 mytime
integer myiter
integer mythid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_getobcsw(
I mytime,
I myiter,
I mythid
& )
c
c
c
implicit none
Real*8 mytime
integer myiter
integer mythid
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_obcsbal(
I mytime,
I myiter,
I mythid
& )
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
integer myiter
Real*8 mytime
integer mythid
return
end
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_init_obcs_variables( mythid )
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
integer mythid
integer bi,bj
integer i,j,k
integer itlo,ithi
integer jtlo,jthi
integer jmin,jmax
integer imin,imax
integer ntmp
integer ivarindex
integer iobcs
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1-oly
jmax = sny+oly
imin = 1-olx
imax = snx+olx
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_GetRec(
I thefield,
O fac,
O first,
O changed,
O count0,
O count1,
I mytime,
I myiter,
I mythid
& )
c
c
c
c
c
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
character*(*) thefield
Real*8 fac
logical first
logical changed
integer count0
integer count1
Real*8 mytime
integer myiter
integer mythid
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
subroutine ctrl_volflux(
I obcsncount,
O sumarea,
O sumflux, mythid
& )
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
integer obcsncount
Real*8 sumflux
Real*8 sumarea
integer mythid
return
end
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_ADVECTION(
I implicitAdvection, advectionScheme, vertAdvecScheme,
I tracerIdentity, deltaTLev,
I uVel, vVel, wVel, tracer,
O gTracer,
I bi,bj, myTime,myIter,myThid)
C
C
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
LOGICAL implicitAdvection
INTEGER advectionScheme, vertAdvecScheme
INTEGER tracerIdentity
Real*8 deltaTLev(Nr)
Real*8 uVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 vVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 wVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 tracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER bi,bj
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 gTracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 maskLocW(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER iMinUpd,iMaxUpd,jMinUpd,jMaxUpd
INTEGER i,j,k,kUp,kDown
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 af (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 afx (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 afy (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fVerT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 localTij(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 localTijk(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 kp1Msk
LOGICAL calc_fluxes_X, calc_fluxes_Y, withSigns
LOGICAL interiorOnly, overlapOnly
INTEGER npass, ipass
INTEGER nCFace
LOGICAL N_edge, S_edge, E_edge, W_edge
act0 = tracerIdentity
max0 = maxpass
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
igadkey = act0
& + act1*max0
& + act2*max0*max1
& + act3*max0*max1*max2
& + act4*max0*max1*max2*max3
IF (tracerIdentity.GT.maxpass) THEN
print *, 'ph-pass gad_advection ', maxpass, tracerIdentity
STOP 'maxpass seems smaller than tracerIdentity'
ENDIF
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
xA(i,j) = 0.d0
yA(i,j) = 0.d0
uTrans(i,j) = 0.d0
vTrans(i,j) = 0.d0
rTrans(i,j) = 0.d0
fVerT(i,j,1) = 0.d0
fVerT(i,j,2) = 0.d0
rTransKp1(i,j)= 0.d0
localTij(i,j) = 0.d0
wfld(i,j) = 0.d0
ENDDO
ENDDO
IF (useCubedSphereExchange) THEN
npass = 3
IF ( npass.GT.maxcube ) STOP 'maxcube needs to be = 3'
nCFace = bi
N_edge = .TRUE.
S_edge = .TRUE.
E_edge = .TRUE.
W_edge = .TRUE.
ELSE
npass = 2
nCFace = 0
N_edge = .FALSE.
S_edge = .FALSE.
E_edge = .FALSE.
W_edge = .FALSE.
ENDIF
DO k=1,Nr
kkey = (igadkey-1)*Nr + k
CADJ STORE tracer(:,:,k,bi,bj) =
CADJ & comlev1_bibj_k_gad, key=kkey, kind=isbyte
CALL CALC_COMMON_FACTORS (
I uVel, vVel,
O uFld, vFld, uTrans, vTrans, xA, yA,
I k,bi,bj, myThid )
IF (useGMRedi)
& CALL GMREDI_CALC_UVFLOW(
U uFld, vFld, uTrans, vTrans,
I k, bi, bj, myThid )
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
localTij(i,j)=tracer(i,j,k,bi,bj)
maskLocW(i,j)=maskW(i,j,k,bi,bj)
maskLocS(i,j)=maskS(i,j,k,bi,bj)
ENDDO
ENDDO
IF (useCubedSphereExchange) THEN
withSigns = .FALSE.
CALL FILL_CS_CORNER_UV_RS(
& withSigns, maskLocW,maskLocS, bi,bj, myThid )
ENDIF
DO ipass=1,npass
passkey = ipass
& + (k-1) *maxpass
& + (igadkey-1)*maxpass*Nr
IF (npass .GT. maxpass) THEN
STOP 'GAD_ADVECTION: npass > maxcube. check tamc.h'
ENDIF
interiorOnly = .FALSE.
overlapOnly = .FALSE.
IF (useCubedSphereExchange) THEN
IF (ipass.EQ.1) THEN
overlapOnly = MOD(nCFace,3).EQ.0
interiorOnly = MOD(nCFace,3).NE.0
calc_fluxes_X = nCFace.EQ.6 .OR. nCFace.EQ.1 .OR. nCFace.EQ.2
calc_fluxes_Y = nCFace.EQ.3 .OR. nCFace.EQ.4 .OR. nCFace.EQ.5
ELSEIF (ipass.EQ.2) THEN
overlapOnly = MOD(nCFace,3).EQ.2
interiorOnly = MOD(nCFace,3).EQ.1
calc_fluxes_X = nCFace.EQ.2 .OR. nCFace.EQ.3 .OR. nCFace.EQ.4
calc_fluxes_Y = nCFace.EQ.5 .OR. nCFace.EQ.6 .OR. nCFace.EQ.1
ELSE
interiorOnly = .TRUE.
calc_fluxes_X = nCFace.EQ.5 .OR. nCFace.EQ.6
calc_fluxes_Y = nCFace.EQ.2 .OR. nCFace.EQ.3
ENDIF
ELSE
calc_fluxes_X = MOD(ipass,2).EQ.1
calc_fluxes_Y = .NOT.calc_fluxes_X
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
af(i,j) = 0.
ENDDO
ENDDO
C
CADJ STORE localTij(:,:) =
CADJ & comlev1_bibj_k_gad_pass, key=passkey, kind=isbyte
CADJ STORE af(:,:) =
CADJ & comlev1_bibj_k_gad_pass, key=passkey, kind=isbyte
C
IF (calc_fluxes_X) THEN
IF ( .NOT.overlapOnly .OR. N_edge .OR. S_edge ) THEN
IF ( overlapOnly ) THEN
CALL FILL_CS_CORNER_TR_RL( 1, .FALSE.,
& localTij, bi,bj, myThid )
ENDIF
CADJ STORE localTij(:,:) =
CADJ & comlev1_bibj_k_gad_pass, key=passkey, kind=isbyte
IF ( advectionScheme.EQ.ENUM_UPWIND_1RST
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
CALL GAD_DST2U1_ADV_X( bi,bj,k, advectionScheme, .TRUE.,
I deltaTLev(k),uTrans,uFld,localTij,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN
CALL GAD_FLUXLIMIT_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskLocW, localTij,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN
CALL GAD_DST3_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskLocW, localTij,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
CALL GAD_DST3FL_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskLocW, localTij,
O af, myThid )
ELSE
STOP 'GAD_ADVECTION: adv. scheme incompatibale with multi-dim'
ENDIF
IF ( overlapOnly .AND. ipass.EQ.1 ) THEN
CALL FILL_CS_CORNER_TR_RL( 2, .FALSE.,
& localTij, bi,bj, myThid )
ENDIF
ENDIF
IF ( overlapOnly ) THEN
iMinUpd = 1-Olx+1
iMaxUpd = sNx+Olx-1
IF ( W_edge ) iMinUpd = 1
IF ( E_edge ) iMaxUpd = sNx
IF ( S_edge ) THEN
DO j=1-Oly,0
DO i=iMinUpd,iMaxUpd
localTij(i,j) = localTij(i,j)
& -deltaTLev(k)*recip_rhoFacC(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *( af(i+1,j)-af(i,j)
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j))
& )
ENDDO
ENDDO
ENDIF
IF ( N_edge ) THEN
DO j=sNy+1,sNy+Oly
DO i=iMinUpd,iMaxUpd
localTij(i,j) = localTij(i,j)
& -deltaTLev(k)*recip_rhoFacC(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *( af(i+1,j)-af(i,j)
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j))
& )
ENDDO
ENDDO
ENDIF
ELSE
jMinUpd = 1-Oly
jMaxUpd = sNy+Oly
IF ( interiorOnly .AND. S_edge ) jMinUpd = 1
IF ( interiorOnly .AND. N_edge ) jMaxUpd = sNy
DO j=jMinUpd,jMaxUpd
DO i=1-Olx+1,sNx+Olx-1
localTij(i,j) = localTij(i,j)
& -deltaTLev(k)*recip_rhoFacC(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *( af(i+1,j)-af(i,j)
& -tracer(i,j,k,bi,bj)*(uTrans(i+1,j)-uTrans(i,j))
& )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
afx(i,j) = af(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
af(i,j) = 0.
ENDDO
ENDDO
C
CADJ STORE localTij(:,:) =
CADJ & comlev1_bibj_k_gad_pass, key=passkey, kind=isbyte
CADJ STORE af(:,:) =
CADJ & comlev1_bibj_k_gad_pass, key=passkey, kind=isbyte
C
IF (calc_fluxes_Y) THEN
IF ( .NOT.overlapOnly .OR. E_edge .OR. W_edge ) THEN
IF ( overlapOnly ) THEN
CALL FILL_CS_CORNER_TR_RL( 2, .FALSE.,
& localTij, bi,bj, myThid )
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
af(i,j) = 0.
ENDDO
ENDDO
CADJ STORE localTij(:,:) =
CADJ & comlev1_bibj_k_gad_pass, key=passkey, kind=isbyte
IF ( advectionScheme.EQ.ENUM_UPWIND_1RST
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
CALL GAD_DST2U1_ADV_Y( bi,bj,k, advectionScheme, .TRUE.,
I deltaTLev(k),vTrans,vFld,localTij,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN
CALL GAD_FLUXLIMIT_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskLocS, localTij,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN
CALL GAD_DST3_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskLocS, localTij,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
CALL GAD_DST3FL_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskLocS, localTij,
O af, myThid )
ELSE
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim'
ENDIF
IF ( overlapOnly .AND. ipass.EQ.1 ) THEN
CALL FILL_CS_CORNER_TR_RL( 1, .FALSE.,
& localTij, bi,bj, myThid )
ENDIF
ENDIF
IF ( overlapOnly ) THEN
jMinUpd = 1-Oly+1
jMaxUpd = sNy+Oly-1
IF ( S_edge ) jMinUpd = 1
IF ( N_edge ) jMaxUpd = sNy
IF ( W_edge ) THEN
DO j=jMinUpd,jMaxUpd
DO i=1-Olx,0
localTij(i,j) = localTij(i,j)
& -deltaTLev(k)*recip_rhoFacC(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *( af(i,j+1)-af(i,j)
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j))
& )
ENDDO
ENDDO
ENDIF
IF ( E_edge ) THEN
DO j=jMinUpd,jMaxUpd
DO i=sNx+1,sNx+Olx
localTij(i,j) = localTij(i,j)
& -deltaTLev(k)*recip_rhoFacC(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *( af(i,j+1)-af(i,j)
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j))
& )
ENDDO
ENDDO
ENDIF
ELSE
iMinUpd = 1-Olx
iMaxUpd = sNx+Olx
IF ( interiorOnly .AND. W_edge ) iMinUpd = 1
IF ( interiorOnly .AND. E_edge ) iMaxUpd = sNx
DO j=1-Oly+1,sNy+Oly-1
DO i=iMinUpd,iMaxUpd
localTij(i,j) = localTij(i,j)
& -deltaTLev(k)*recip_rhoFacC(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *( af(i,j+1)-af(i,j)
& -tracer(i,j,k,bi,bj)*(vTrans(i,j+1)-vTrans(i,j))
& )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
afy(i,j) = af(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
ENDDO
IF ( implicitAdvection ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
gTracer(i,j,k,bi,bj)=
& (localTij(i,j)-tracer(i,j,k,bi,bj))/deltaTLev(k)
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
localTijk(i,j,k)=localTij(i,j)
ENDDO
ENDDO
ENDIF
IF ( debugLevel .GE. debLevB
& .AND. tracerIdentity.EQ.GAD_TEMPERATURE
& .AND. k.LE.3 .AND. myIter.EQ.1+nIter0
& .AND. nPx.EQ.1 .AND. nPy.EQ.1
& .AND. useCubedSphereExchange ) THEN
CALL DEBUG_CS_CORNER_UV( ' afx,afy from GAD_ADVECTION',
& afx,afy, k, standardMessageUnit,bi,bj,myThid )
ENDIF
ENDDO
IF ( .NOT.implicitAdvection ) THEN
DO k=Nr,1,-1
kkey = (igadkey-1)*Nr + (Nr-k+1)
kUp = 1+MOD(k+1,2)
kDown= 1+MOD(k,2)
kp1Msk=1.
if (k.EQ.Nr) kp1Msk=0.
CADJ STORE rtrans(:,:) =
CADJ & comlev1_bibj_k_gad, key=kkey, kind=isbyte
IF ( k.EQ.1 ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rTransKp1(i,j) = kp1Msk*rTrans(i,j)
wFld(i,j) = 0.
rTrans(i,j) = 0.
fVerT(i,j,kUp) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rTransKp1(i,j) = kp1Msk*rTrans(i,j)
wFld(i,j) = wVel(i,j,k,bi,bj)
rTrans(i,j) = wVel(i,j,k,bi,bj)*rA(i,j,bi,bj)
& *deepFac2F(k)*rhoFacF(k)
& *maskC(i,j,k-1,bi,bj)
fVerT(i,j,kUp) = 0.
ENDDO
ENDDO
IF (useGMRedi)
& CALL GMREDI_CALC_WFLOW(
U wFld, rTrans,
I k, bi, bj, myThid )
IF ( vertAdvecScheme.EQ.ENUM_UPWIND_1RST
& .OR. vertAdvecScheme.EQ.ENUM_DST2 ) THEN
CALL GAD_DST2U1_ADV_R( bi,bj,k, advectionScheme,
I deltaTLev(k),rTrans,wFld,localTijk,
O fVerT(1-Olx,1-Oly,kUp), myThid )
ELSEIF( vertAdvecScheme.EQ.ENUM_FLUX_LIMIT) THEN
CALL GAD_FLUXLIMIT_ADV_R( bi,bj,k, deltaTLev(k),
I rTrans, wFld, localTijk,
O fVerT(1-Olx,1-Oly,kUp), myThid )
ELSEIF( vertAdvecScheme.EQ.ENUM_DST3 ) THEN
CALL GAD_DST3_ADV_R( bi,bj,k, deltaTLev(k),
I rTrans, wFld, localTijk,
O fVerT(1-Olx,1-Oly,kUp), myThid )
ELSEIF( vertAdvecScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
CALL GAD_DST3FL_ADV_R( bi,bj,k, deltaTLev(k),
I rTrans, wFld, localTijk,
O fVerT(1-Olx,1-Oly,kUp), myThid )
ELSE
STOP 'GAD_ADVECTION: adv. scheme incompatibale with mutli-dim'
ENDIF
ENDIF
CADJ STORE fVerT(:,:,:)
CADJ & = comlev1_bibj_k_gad, key=kkey, kind=isbyte
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
localTij(i,j) = localTijk(i,j,k)
& -deltaTLev(k)*recip_rhoFacC(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *( fVerT(i,j,kDown)-fVerT(i,j,kUp)
& -tracer(i,j,k,bi,bj)*(rTransKp1(i,j)-rTrans(i,j))
& )*rkSign
gTracer(i,j,k,bi,bj)=
& (localTij(i,j)-tracer(i,j,k,bi,bj))/deltaTLev(k)
ENDDO
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_BIHARM_X(
I bi,bj,k,
I xA,del2T,diffK4,
U dfx,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2T(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 diffK4
INTEGER myThid
Real*8 dfx (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx
dfx(i,j) = dfx(i,j) + diffK4*xA(i,j)
& *recip_dxC(i,j,bi,bj)*recip_deepFacC(k)
& *(del2T(i,j)-del2T(i-1,j))
& *sqCosFacU(j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_BIHARM_Y(
I bi,bj,k,
I yA,del2T,diffK4,
O dfy,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2T(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 diffK4
INTEGER myThid
Real*8 dfy (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
dfy(i,j) = dfy(i,j) + diffK4*yA(i,j)
& *recip_dyC(i,j,bi,bj)*recip_deepFacC(k)
& *(del2T(i,j)-del2T(i,j-1))
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_C2_ADV_R(
I bi,bj,k,
I rTrans,
I tracer,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,km1
km1=max(1,k-1)
IF ( k.EQ.1 .OR. k.GT.Nr) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wT(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wT(i,j) = maskC(i,j,kM1,bi,bj)*
& rTrans(i,j)*
& (Tracer(i,j,k,bi,bj)+Tracer(i,j,kM1,bi,bj))*0.5d0
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_C2_IMPL_R(
I bi,bj,k, iMin,iMax,jMin,jMax,
I deltaTarg, rTrans,
O a3d, b3d, c3d,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
INTEGER iMin,iMax,jMin,jMax
Real*8 deltaTarg(Nr)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 a3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 b3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 c3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
INTEGER i,j
Real*8 rCenter
IF ( k.GT.1 .AND. k.LE.Nr ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
rCenter = 0.5d0 *rTrans(i,j)*recip_rA(i,j,bi,bj)*rkSign
a3d(i,j,k) = a3d(i,j,k)
& - rCenter*deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b3d(i,j,k) = b3d(i,j,k)
& - rCenter*deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b3d(i,j,k-1) = b3d(i,j,k-1)
& + rCenter*deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
c3d(i,j,k-1) = c3d(i,j,k-1)
& + rCenter*deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_C2_ADV_X(
I bi,bj,k,
I uTrans,
I tracer,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx
uT(i,j) =
& uTrans(i,j)*(Tracer(i,j)+Tracer(i-1,j))*0.5d0
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_C2_ADV_Y(
I bi,bj,k,
I vTrans,
I tracer,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.
ENDDO
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
vT(i,j) =
& vTrans(i,j)*(Tracer(i,j)+Tracer(i,j-1))*0.5d0
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_C4_ADV_R(
I bi,bj,k,
I rTrans,
I tracer,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1,km1,km2
Real*8 Rjm,Rj,Rjp,Rjjm,Rjjp
Real*8 maskPM, maskBound
km2=MAX(1,k-2)
km1=MAX(1,k-1)
kp1=MIN(Nr,k+1)
maskPM = 1.
IF (k.LE.2 .OR. k.GE.Nr) maskPM = 0.
IF ( k.EQ.1 .OR. k.GT.Nr) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wT(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
maskBound = maskPM*maskC(i,j,km2,bi,bj)*maskC(i,j,kp1,bi,bj)
Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))
& *maskC(i,j,kp1,bi,bj)
Rj =(tracer(i,j,k,bi,bj)-tracer(i,j,km1,bi,bj))
Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,km2,bi,bj))
& *maskC(i,j,km1,bi,bj)
Rjjp=(Rjp-Rj)
Rjjm=(Rj-Rjm)
wT(i,j) = maskC(i,j,km1,bi,bj)*(
& rTrans(i,j)*(
& (Tracer(i,j,k,bi,bj)+Tracer(i,j,km1,bi,bj))*0.5d0
& -oneSixth*(Rjjm+Rjjp)*0.5d0 )
& +ABS(rTrans(i,j))*
& oneSixth*(Rjjm-Rjjp)*0.5d0*(1.d0 - maskBound)
& )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_C4_ADV_X(
I bi,bj,k,
I uTrans,
I tracer,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Rjm,Rj,Rjp,Rjjm,Rjjp
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.
uT(2-Olx,j)=0.
uT(sNx+Olx,j)=0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+2,sNx+Olx-1
Rjp=(tracer(i+1,j)-tracer(i,j))
& *maskW(i+1,j,k,bi,bj)
Rj =(tracer(i,j)-tracer(i-1,j))
& *maskW(i,j,k,bi,bj)
Rjm=(tracer(i-1,j)-tracer(i-2,j))
& *maskW(i-1,j,k,bi,bj)
Rjjp=(Rjp-Rj)
Rjjm=(Rj-Rjm)
uT(i,j) =
& uTrans(i,j)*(
& Tracer(i,j)+Tracer(i-1,j)-oneSixth*( Rjjp+Rjjm )
& )*0.5d0
& +ABS( uTrans(i,j) )*0.5d0*oneSixth*( Rjjp-Rjjm )
& *( 1.d0 - maskW(i-1,j,k,bi,bj)*maskW(i+1,j,k,bi,bj) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_C4_ADV_Y(
I bi,bj,k,
I vTrans,
I tracer,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Rjm,Rj,Rjp,Rjjm,Rjjp
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.
vT(i,2-Oly)=0.
vT(i,sNy+Oly)=0.
ENDDO
DO j=1-Oly+2,sNy+Oly-1
DO i=1-Olx,sNx+Olx
Rjp=(tracer(i,j+1)-tracer(i,j))
& *maskS(i,j+1,k,bi,bj)
Rj =(tracer(i,j)-tracer(i,j-1))
& *maskS(i,j,k,bi,bj)
Rjm=(tracer(i,j-1)-tracer(i,j-2))
& *maskS(i,j-1,k,bi,bj)
Rjjp=(Rjp-Rj)
Rjjm=(Rj-Rjm)
vT(i,j) =
& vTrans(i,j)*(
& Tracer(i,j)+Tracer(i,j-1)-oneSixth*( Rjjp+Rjjm )
& )*0.5d0
& +ABS( vTrans(i,j) )*0.5d0*oneSixth*( Rjjp-Rjjm )
& *( 1.d0 - maskS(i,j-1,k,bi,bj)*maskS(i,j+1,k,bi,bj) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_CALC_RHS(
I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
I xA, yA, maskUp, uFld, vFld, wFld,
I uTrans, vTrans, rTrans, rTransKp1,
I diffKh, diffK4, KappaR, TracerN, TracAB,
I deltaTLev, tracerIdentity,
I advectionScheme, vertAdvecScheme,
I calcAdvection, implicitAdvection, applyAB_onTracer,
I trUseGMRedi, trUseKPP,
U fVerT, gTracer,
I myTime, myIter, myThid )
C
C
C
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k,kUp,kDown,kM1
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 diffKh, diffK4
Real*8 KappaR(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 TracerN(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TracAB (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 deltaTLev(Nr)
INTEGER tracerIdentity
INTEGER advectionScheme, vertAdvecScheme
LOGICAL calcAdvection
LOGICAL implicitAdvection, applyAB_onTracer
LOGICAL trUseGMRedi, trUseKPP
Real*8 myTime
INTEGER myIter, myThid
Real*8 gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 fVerT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
INTEGER i,j
Real*8 df4 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fZon (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fMer (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 af (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 df (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 localT(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 locABT(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 advFac, rAdvFac
fVerT(1,1,kDown) = fVerT(1,1,kDown)
advFac = 0.d0
IF (calcAdvection) advFac = 1.d0
rAdvFac = rkSign*advFac
IF (implicitAdvection) rAdvFac = 0.d0
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
fZon(i,j) = 0.d0
fMer(i,j) = 0.d0
fVerT(i,j,kUp) = 0.d0
df(i,j) = 0.d0
df4(i,j) = 0.d0
ENDDO
ENDDO
IF ( applyAB_onTracer ) THEN
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
localT(i,j)=TracerN(i,j,k,bi,bj)
locABT(i,j)= TracAB(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
localT(i,j)= TracAB(i,j,k,bi,bj)
locABT(i,j)= TracAB(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
IF (diffK4 .NE. 0.) THEN
CALL GAD_GRAD_X(bi,bj,k,xA,localT,fZon,myThid)
CALL GAD_GRAD_Y(bi,bj,k,yA,localT,fMer,myThid)
CALL GAD_DEL2(bi,bj,k,fZon,fMer,df4,myThid)
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fZon(i,j) = 0.d0
ENDDO
ENDDO
IF (calcAdvection) THEN
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN
CALL GAD_C2_ADV_X(bi,bj,k,uTrans,locABT,af,myThid)
ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_1RST
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
CALL GAD_DST2U1_ADV_X( bi,bj,k, advectionScheme, .TRUE.,
I deltaTLev(k), uTrans, uFld, locABT,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN
CALL GAD_FLUXLIMIT_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_UPWIND_3RD ) THEN
CALL GAD_U3_ADV_X(bi,bj,k,uTrans,locABT,af,myThid)
ELSEIF (advectionScheme.EQ.ENUM_CENTERED_4TH) THEN
CALL GAD_C4_ADV_X(bi,bj,k,uTrans,locABT,af,myThid)
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN
CALL GAD_DST3_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
IF ( inAdMode ) THEN
CALL GAD_DST3_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSE
CALL GAD_DST3FL_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ENDIF
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN
CALL GAD_OS7MP_ADV_X( bi,bj,k, .TRUE., deltaTLev(k),
I uTrans, uFld, maskW(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSE
STOP 'GAD_CALC_RHS: Bad advectionScheme (X)'
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fZon(i,j) = fZon(i,j) + af(i,j)
ENDDO
ENDDO
ENDIF
IF (diffKh.NE.0.) THEN
CALL GAD_DIFF_X(bi,bj,k,xA,diffKh,localT,df,myThid)
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
df(i,j) = 0.d0
ENDDO
ENDDO
ENDIF
IF (diffK4 .NE. 0.) THEN
CALL GAD_BIHARM_X(bi,bj,k,xA,df4,diffK4,df,myThid)
ENDIF
IF ( trUseGMRedi ) THEN
IF ( applyAB_onTracer ) THEN
CALL GMREDI_XTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,k,
I xA,TracerN,tracerIdentity,
U df,
I myThid)
ELSE
CALL GMREDI_XTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,k,
I xA,TracAB, tracerIdentity,
U df,
I myThid)
ENDIF
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fZon(i,j) = fZon(i,j) + df(i,j)*rhoFacC(k)
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fMer(i,j) = 0.d0
ENDDO
ENDDO
IF (calcAdvection) THEN
IF (advectionScheme.EQ.ENUM_CENTERED_2ND) THEN
CALL GAD_C2_ADV_Y(bi,bj,k,vTrans,locABT,af,myThid)
ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_1RST
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
CALL GAD_DST2U1_ADV_Y( bi,bj,k, advectionScheme, .TRUE.,
I deltaTLev(k), vTrans, vFld, locABT,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_FLUX_LIMIT) THEN
CALL GAD_FLUXLIMIT_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_UPWIND_3RD ) THEN
CALL GAD_U3_ADV_Y(bi,bj,k,vTrans,locABT,af,myThid)
ELSEIF (advectionScheme.EQ.ENUM_CENTERED_4TH) THEN
CALL GAD_C4_ADV_Y(bi,bj,k,vTrans,locABT,af,myThid)
ELSEIF (advectionScheme.EQ.ENUM_DST3 ) THEN
CALL GAD_DST3_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSEIF (advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
IF ( inAdMode ) THEN
CALL GAD_DST3_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSE
CALL GAD_DST3FL_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ENDIF
ELSEIF (advectionScheme.EQ.ENUM_OS7MP ) THEN
CALL GAD_OS7MP_ADV_Y( bi,bj,k, .TRUE., deltaTLev(k),
I vTrans, vFld, maskS(1-Olx,1-Oly,k,bi,bj), locABT,
O af, myThid )
ELSE
STOP 'GAD_CALC_RHS: Bad advectionScheme (Y)'
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fMer(i,j) = fMer(i,j) + af(i,j)
ENDDO
ENDDO
ENDIF
IF (diffKh.NE.0.) THEN
CALL GAD_DIFF_Y(bi,bj,k,yA,diffKh,localT,df,myThid)
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
df(i,j) = 0.d0
ENDDO
ENDDO
ENDIF
IF (diffK4 .NE. 0.) THEN
CALL GAD_BIHARM_Y(bi,bj,k,yA,df4,diffK4,df,myThid)
ENDIF
IF ( trUseGMRedi ) THEN
IF ( applyAB_onTracer ) THEN
CALL GMREDI_YTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,k,
I yA,TracerN,tracerIdentity,
U df,
I myThid)
ELSE
CALL GMREDI_YTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,k,
I yA,TracAB, tracerIdentity,
U df,
I myThid)
ENDIF
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fMer(i,j) = fMer(i,j) + df(i,j)*rhoFacC(k)
ENDDO
ENDDO
IF (calcAdvection .AND. .NOT.implicitAdvection .AND. k.GE.2) THEN
IF (vertAdvecScheme.EQ.ENUM_CENTERED_2ND) THEN
CALL GAD_C2_ADV_R(bi,bj,k,rTrans,TracAB,af,myThid)
ELSEIF ( vertAdvecScheme.EQ.ENUM_UPWIND_1RST
& .OR. vertAdvecScheme.EQ.ENUM_DST2 ) THEN
CALL GAD_DST2U1_ADV_R( bi,bj,k, vertAdvecScheme,
I deltaTLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj),
O af, myThid )
ELSEIF (vertAdvecScheme.EQ.ENUM_FLUX_LIMIT) THEN
CALL GAD_FLUXLIMIT_ADV_R( bi,bj,k,
I deltaTLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj),
O af, myThid )
ELSEIF (vertAdvecScheme.EQ.ENUM_UPWIND_3RD ) THEN
CALL GAD_U3_ADV_R(bi,bj,k,rTrans,TracAB,af,myThid)
ELSEIF (vertAdvecScheme.EQ.ENUM_CENTERED_4TH) THEN
CALL GAD_C4_ADV_R(bi,bj,k,rTrans,TracAB,af,myThid)
ELSEIF (vertAdvecScheme.EQ.ENUM_DST3 ) THEN
CALL GAD_DST3_ADV_R( bi,bj,k,
I deltaTLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj),
O af, myThid )
ELSEIF (vertAdvecScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
IF ( inAdMode ) THEN
CALL GAD_DST3_ADV_R( bi,bj,k,
I deltaTLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj),
O af, myThid )
ELSE
CALL GAD_DST3FL_ADV_R( bi,bj,k,
I deltaTLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj),
O af, myThid )
ENDIF
ELSEIF (vertAdvecScheme.EQ.ENUM_OS7MP ) THEN
CALL GAD_OS7MP_ADV_R( bi,bj,k,
I deltaTLev(k),rTrans,wFld,TracAB(1-Olx,1-Oly,1,bi,bj),
O af, myThid )
ELSE
STOP 'GAD_CALC_RHS: Bad vertAdvecScheme (R)'
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fVerT(i,j,kUp) = fVerT(i,j,kUp) + af(i,j)
ENDDO
ENDDO
ENDIF
IF (implicitDiffusion) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
df(i,j) = 0.d0
ENDDO
ENDDO
ELSE
IF ( applyAB_onTracer ) THEN
CALL GAD_DIFF_R(bi,bj,k,KappaR,TracerN,df,myThid)
ELSE
CALL GAD_DIFF_R(bi,bj,k,KappaR,TracAB, df,myThid)
ENDIF
ENDIF
IF ( trUseGMRedi ) THEN
IF ( applyAB_onTracer ) THEN
CALL GMREDI_RTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,k,
I TracerN,tracerIdentity,
U df,
I myThid)
ELSE
CALL GMREDI_RTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,k,
I TracAB, tracerIdentity,
U df,
I myThid)
ENDIF
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fVerT(i,j,kUp) = fVerT(i,j,kUp) + df(i,j)*maskUp(i,j)
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
gTracer(i,j,k,bi,bj)=gTracer(i,j,k,bi,bj)
& -recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *recip_rA(i,j,bi,bj)*recip_deepFac2C(k)*recip_rhoFacC(k)
& *( (fZon(i+1,j)-fZon(i,j))
& +(fMer(i,j+1)-fMer(i,j))
& +(fVerT(i,j,kDown)-fVerT(i,j,kUp))*rkSign
& -localT(i,j)*( (uTrans(i+1,j)-uTrans(i,j))
& +(vTrans(i,j+1)-vTrans(i,j))
& +(rTransKp1(i,j)-rTrans(i,j))*rAdvFac
& )*advFac
& )
ENDDO
ENDDO
IF ( debugLevel .GE. debLevB
& .AND. tracerIdentity.EQ.GAD_TEMPERATURE
& .AND. k.EQ.2 .AND. myIter.EQ.1+nIter0
& .AND. nPx.EQ.1 .AND. nPy.EQ.1
& .AND. useCubedSphereExchange ) THEN
CALL DEBUG_CS_CORNER_UV( ' fZon,fMer from GAD_CALC_RHS',
& fZon,fMer, k, standardMessageUnit,bi,bj,myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DEL2(
I bi,bj,k,
I dTdx,dTdy,
O del2,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 dTdx(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dTdy(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 del2(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
del2(i,j)= 0.d0
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
del2(i,j)=recip_rA(i,j,bi,bj)*recip_deepFac2C(k)
& *recip_drF(k)*recip_hFacC(i,j,k,bi,bj)
& *( ( dTdx(i+1,j)-dTdx(i,j) )
& +( dTdy(i,j+1)-dTdy(i,j) )
& )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DIFF_R(
I bi,bj,k,
I KappaR,
I tracer,
O dfr,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
Real*8 KappaR(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 dfr (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,km1
km1=MAX(1,k-1)
IF (k.EQ.1 .OR. k.GT.Nr) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dfr(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dfr(i,j) = -KappaR(i,j)
& *rA(i,j,bi,bj)*deepFac2F(k)*rhoFacF(k)
& *recip_drC(k)
& *(tracer(i,j,k,bi,bj)-tracer(i,j,km1,bi,bj))*rkSign
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DIFF_X(
I bi,bj,k,
I xA, diffKh,
I tracer,
O dfx,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 diffKh
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 dfx (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly,sNy+Oly
dfx(1-Olx,j)=0.
DO i=1-Olx+1,sNx+Olx
dfx(i,j) = -diffKh*xA(i,j)
& *recip_dxC(i,j,bi,bj)*recip_deepFacC(k)
& *(tracer(i,j)-tracer(i-1,j))
& *cosFacU(j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DIFF_Y(
I bi,bj,k,
I yA, diffKh,
I tracer,
O dfy,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 diffKh
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 dfy (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO i=1-Olx,sNx+Olx
dfy(i,1-Oly)=0.
ENDDO
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
dfy(i,j) = -diffKh*yA(i,j)
& *recip_dyC(i,j,bi,bj)*recip_deepFacC(k)
& *(tracer(i,j)-tracer(i,j-1))
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST2U1_ADV_R(
I bi,bj,k, advectionScheme,
I deltaTloc, rTrans, wFld,
I tracer,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
INTEGER advectionScheme
Real*8 deltaTloc
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,km1
Real*8 wLoc, wCFL, rLimit, wAbs
rLimit = 0.d0
IF ( advectionScheme.EQ.ENUM_DST2 ) rLimit = 1.d0
km1=MAX(1,k-1)
IF ( k.LE.1 .OR. k.GT.Nr) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wT(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wLoc = wFld(i,j)
wCFL = ABS(wLoc*deltaTloc*recip_drC(k))
wAbs = ABS(rTrans(i,j))*rkSign
& *( 1.d0 - rLimit*(1.d0 - wCFL) )
wT(i,j) = maskC(i,j,km1,bi,bj)*(
& ( rTrans(i,j)+wAbs )* 0.5d0 * tracer(i,j,km1)
& + ( rTrans(i,j)-wAbs )* 0.5d0 * tracer(i,j,k)
& )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST2U1_IMPL_R(
I bi,bj,k, iMin,iMax,jMin,jMax,
I advectionScheme, deltaTarg, rTrans,
O a3d, b3d, c3d,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
INTEGER iMin,iMax,jMin,jMax
INTEGER advectionScheme
Real*8 deltaTarg(Nr)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 a3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 b3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 c3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
INTEGER i,j
Real*8 w_CFL, rLimit
Real*8 rCenter, rUpwind
Real*8 deltaTcfl
rLimit = 0.d0
IF ( advectionScheme.EQ.ENUM_DST2 ) rLimit = 1.d0
IF ( k.GT.1 .AND. k.LE.Nr ) THEN
deltaTcfl = deltaTarg(k)
DO j=jMin,jMax
DO i=iMin,iMax
w_CFL = deltaTcfl*ABS(rTrans(i,j))
& *recip_rA(i,j,bi,bj)*recip_drC(k)
rCenter = 0.5d0 *rTrans(i,j)*recip_rA(i,j,bi,bj)*rkSign
rUpwind = ABS(rCenter)
& * ( 1.d0 - rLimit )
a3d(i,j,k) = a3d(i,j,k)
& - (rCenter+rUpwind)*deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b3d(i,j,k) = b3d(i,j,k)
& - (rCenter-rUpwind)*deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b3d(i,j,k-1) = b3d(i,j,k-1)
& + (rCenter+rUpwind)*deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
c3d(i,j,k-1) = c3d(i,j,k-1)
& + (rCenter-rUpwind)*deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST2U1_ADV_X(
I bi,bj,k, advectionScheme, calcCFL,
I deltaTloc, uTrans, uFld,
I tracer,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
INTEGER advectionScheme
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 uCFL, xLimit, uAbs
xLimit = 0.d0
IF ( advectionScheme.EQ.ENUM_DST2 ) xLimit = 1.d0
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx
uCFL = uFld(i,j)
IF ( calcCFL ) uCFL = ABS( uFld(i,j)*deltaTloc
& *recip_dxC(i,j,bi,bj)*recip_deepFacC(k) )
uAbs = ABS(uTrans(i,j))
& *( 1.d0 - xLimit*(1.d0 - uCFL) )
uT(i,j) = ( uTrans(i,j)+uAbs )* 0.5d0 * tracer(i-1,j)
& + ( uTrans(i,j)-uAbs )* 0.5d0 * tracer(i,j)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST2U1_ADV_Y(
I bi,bj,k, advectionScheme, calcCFL,
I deltaTloc, vTrans, vFld,
I tracer,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj, k, advectionScheme
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 vCFL, yLimit, vAbs
yLimit = 0.d0
IF ( advectionScheme.EQ.ENUM_DST2 ) yLimit = 1.d0
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.
ENDDO
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
vCFL = vFld(i,j)
IF ( calcCFL ) vCFL = ABS( vFld(i,j)*deltaTloc
& *recip_dyC(i,j,bi,bj)*recip_deepFacC(k) )
vAbs = ABS(vTrans(i,j))
& *( 1.d0 - yLimit*(1.d0 - vCFL) )
vT(i,j) = ( vTrans(i,j)+vAbs )* 0.5d0 * tracer(i,j-1)
& + ( vTrans(i,j)-vAbs )* 0.5d0 * tracer(i,j)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST3_ADV_X(
I bi,bj,k, calcCFL, deltaTloc,
I uTrans, uFld,
I maskLocW, tracer,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocW(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Rjm,Rj,Rjp,uCFL,d0,d1
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.
uT(2-Olx,j)=0.
uT(sNx+Olx,j)=0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+2,sNx+Olx-1
Rjp=(tracer(i+1,j)-tracer( i ,j))*maskLocW(i+1,j)
Rj =(tracer( i ,j)-tracer(i-1,j))*maskLocW( i ,j)
Rjm=(tracer(i-1,j)-tracer(i-2,j))*maskLocW(i-1,j)
uCFL = uFld(i,j)
IF ( calcCFL ) uCFL = ABS( uFld(i,j)*deltaTloc
& *recip_dxC(i,j,bi,bj)*recip_deepFacC(k) )
d0=(2.-uCFL)*(1.-uCFL)*oneSixth
d1=(1.-uCFL*uCFL)*oneSixth
uT(i,j)=
& 0.5*(uTrans(i,j)+ABS(uTrans(i,j)))
& *( Tracer(i-1,j) + (d0*Rj+d1*Rjm) )
& +0.5*(uTrans(i,j)-ABS(uTrans(i,j)))
& *( Tracer( i ,j) - (d0*Rj+d1*Rjp) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST3_ADV_Y(
I bi,bj,k, calcCFL, deltaTloc,
I vTrans, vFld,
I maskLocS, tracer,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Rjm,Rj,Rjp,vCFL,d0,d1
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.
vT(i,2-Oly)=0.
vT(i,sNy+Oly)=0.
ENDDO
DO j=1-Oly+2,sNy+Oly-1
DO i=1-Olx,sNx+Olx
Rjp=(tracer(i,j+1)-tracer(i, j ))*maskLocS(i,j+1)
Rj =(tracer(i, j )-tracer(i,j-1))*maskLocS(i, j )
Rjm=(tracer(i,j-1)-tracer(i,j-2))*maskLocS(i,j-1)
vCFL = vFld(i,j)
IF ( calcCFL ) vCFL = ABS( vFld(i,j)*deltaTloc
& *recip_dyC(i,j,bi,bj)*recip_deepFacC(k) )
d0=(2.-vCFL)*(1.-vCFL)*oneSixth
d1=(1.-vCFL*vCFL)*oneSixth
vT(i,j)=
& 0.5*(vTrans(i,j)+ABS(vTrans(i,j)))
& *( Tracer(i,j-1) + (d0*Rj+d1*Rjm) )
& +0.5*(vTrans(i,j)-ABS(vTrans(i,j)))
& *( Tracer(i, j ) - (d0*Rj+d1*Rjp) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST3_ADV_R(
I bi,bj,k,dTarg,
I rTrans, wFld,
I tracer,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 dTarg
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1,km1,km2
Real*8 wLoc
Real*8 Rjm,Rj,Rjp,cfl,d0,d1
km2=MAX(1,k-2)
km1=MAX(1,k-1)
kp1=MIN(Nr,k+1)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
Rjp=(tracer(i,j,k)-tracer(i,j,kp1))
& *maskC(i,j,kp1,bi,bj)
Rj =(tracer(i,j,km1)-tracer(i,j,k))
& *maskC(i,j,k,bi,bj)*maskC(i,j,km1,bi,bj)
Rjm=(tracer(i,j,km2)-tracer(i,j,km1))
& *maskC(i,j,km1,bi,bj)
wLoc = wFld(i,j)
cfl=ABS(wLoc*dTarg*recip_drC(k))
d0=(2.-cfl)*(1.-cfl)*oneSixth
d1=(1.-cfl*cfl)*oneSixth
wT(i,j)=
& 0.5*(rTrans(i,j)+ABS(rTrans(i,j)))
& *( tracer(i,j, k ) + (d0*Rj+d1*Rjp) )
& +0.5*(rTrans(i,j)-ABS(rTrans(i,j)))
& *( tracer(i,j,km1) - (d0*Rj+d1*Rjm) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST3FL_ADV_X(
I bi,bj,k, calcCFL, deltaTloc,
I uTrans, uFld,
I maskLocW, tracer,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocW(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
Real*8 Rjm,Rj,Rjp,uCFL,d0,d1,psiP,psiM,thetaP,thetaM
Real*8 thetaMax
PARAMETER( thetaMax = 1.D+20 )
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.d0
uT(2-Olx,j)=0.d0
uT(sNx+Olx,j)=0.d0
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+2,sNx+Olx-1
Rjp=(tracer(i+1,j)-tracer( i ,j))*maskLocW(i+1,j)
Rj =(tracer( i ,j)-tracer(i-1,j))*maskLocW( i ,j)
Rjm=(tracer(i-1,j)-tracer(i-2,j))*maskLocW(i-1,j)
uCFL = uFld(i,j)
IF ( calcCFL ) uCFL = ABS( uFld(i,j)*deltaTloc
& *recip_dxC(i,j,bi,bj)*recip_deepFacC(k) )
d0=(2.d0 -uCFL)*(1.d0 -uCFL)*oneSixth
d1=(1.d0 -uCFL*uCFL)*oneSixth
IF ( ABS(Rj)*thetaMax .LE. ABS(Rjm) ) THEN
thetaP=SIGN(thetaMax,Rjm*Rj)
ELSE
thetaP=Rjm/Rj
ENDIF
IF ( ABS(Rj)*thetaMax .LE. ABS(Rjp) ) THEN
thetaM=SIGN(thetaMax,Rjp*Rj)
ELSE
thetaM=Rjp/Rj
ENDIF
psiP=d0+d1*thetaP
psiP=MAX(0.d0,MIN(MIN(1.d0,psiP),
& thetaP*(1.d0 -uCFL)/(uCFL+1.D-20) ))
psiM=d0+d1*thetaM
psiM=MAX(0.d0,MIN(MIN(1.d0,psiM),
& thetaM*(1.d0 -uCFL)/(uCFL+1.D-20) ))
uT(i,j)=
& 0.5*(uTrans(i,j)+ABS(uTrans(i,j)))
& *( Tracer(i-1,j) + psiP*Rj )
& +0.5*(uTrans(i,j)-ABS(uTrans(i,j)))
& *( Tracer( i ,j) - psiM*Rj )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST3FL_ADV_Y(
I bi,bj,k, calcCFL, deltaTloc,
I vTrans, vFld,
I maskLocS, tracer,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
Real*8 Rjm,Rj,Rjp,vCFL,d0,d1,psiP,psiM,thetaP,thetaM
Real*8 thetaMax
PARAMETER( thetaMax = 1.D+20 )
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.d0
vT(i,2-Oly)=0.d0
vT(i,sNy+Oly)=0.d0
ENDDO
DO j=1-Oly+2,sNy+Oly-1
DO i=1-Olx,sNx+Olx
Rjp=(tracer(i,j+1)-tracer(i, j ))*maskLocS(i,j+1)
Rj =(tracer(i, j )-tracer(i,j-1))*maskLocS(i, j )
Rjm=(tracer(i,j-1)-tracer(i,j-2))*maskLocS(i,j-1)
vCFL = vFld(i,j)
IF ( calcCFL ) vCFL = ABS( vFld(i,j)*deltaTloc
& *recip_dyC(i,j,bi,bj)*recip_deepFacC(k) )
d0=(2.d0 -vCFL)*(1.d0 -vCFL)*oneSixth
d1=(1.d0 -vCFL*vCFL)*oneSixth
IF ( ABS(Rj)*thetaMax .LE. ABS(Rjm) ) THEN
thetaP=SIGN(thetaMax,Rjm*Rj)
ELSE
thetaP=Rjm/Rj
ENDIF
IF ( ABS(Rj)*thetaMax .LE. ABS(Rjp) ) THEN
thetaM=SIGN(thetaMax,Rjp*Rj)
ELSE
thetaM=Rjp/Rj
ENDIF
psiP=d0+d1*thetaP
psiP=MAX(0.d0,MIN(MIN(1.d0,psiP),
& thetaP*(1.d0 -vCFL)/(vCFL+1.D-20) ))
psiM=d0+d1*thetaM
psiM=MAX(0.d0,MIN(MIN(1.d0,psiM),
& thetaM*(1.d0 -vCFL)/(vCFL+1.D-20) ))
vT(i,j)=
& 0.5*(vTrans(i,j)+ABS(vTrans(i,j)))
& *( Tracer(i,j-1) + psiP*Rj )
& +0.5*(vTrans(i,j)-ABS(vTrans(i,j)))
& *( Tracer(i, j ) - psiM*Rj )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST3FL_ADV_R(
I bi,bj,k,dTarg,
I rTrans, wFld,
I tracer,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 dTarg
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1,km1,km2
Real*8 Rjm,Rj,Rjp,wCFL,d0,d1
Real*8 psiP,psiM,thetaP,thetaM
Real*8 wLoc
Real*8 thetaMax
PARAMETER( thetaMax = 1.D+20 )
km2=MAX(1,k-2)
km1=MAX(1,k-1)
kp1=MIN(Nr,k+1)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
Rjp=(tracer(i,j,k)-tracer(i,j,kp1))
& *maskC(i,j,kp1,bi,bj)
Rj =(tracer(i,j,km1)-tracer(i,j,k))
& *maskC(i,j,k,bi,bj)*maskC(i,j,km1,bi,bj)
Rjm=(tracer(i,j,km2)-tracer(i,j,km1))
& *maskC(i,j,km1,bi,bj)
wLoc = wFld(i,j)
wCFL = ABS(wLoc*dTarg*recip_drC(k))
d0=(2.d0 -wCFL)*(1.d0 -wCFL)*oneSixth
d1=(1.d0 -wCFL*wCFL)*oneSixth
IF ( ABS(Rj)*thetaMax .LE. ABS(Rjm) ) THEN
thetaP=SIGN(thetaMax,Rjm*Rj)
ELSE
thetaP=Rjm/Rj
ENDIF
IF ( ABS(Rj)*thetaMax .LE. ABS(Rjp) ) THEN
thetaM=SIGN(thetaMax,Rjp*Rj)
ELSE
thetaM=Rjp/Rj
ENDIF
psiP=d0+d1*thetaP
psiP=MAX(0.d0,MIN(MIN(1.d0,psiP),
& thetaP*(1.d0 -wCFL)/(wCFL+1.D-20) ))
psiM=d0+d1*thetaM
psiM=MAX(0.d0,MIN(MIN(1.d0,psiM),
& thetaM*(1.d0 -wCFL)/(wCFL+1.D-20) ))
wT(i,j)=
& 0.5*(rTrans(i,j)+ABS(rTrans(i,j)))
& *( tracer(i,j, k ) + psiM*Rj )
& +0.5*(rTrans(i,j)-ABS(rTrans(i,j)))
& *( tracer(i,j,km1) - psiP*Rj )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_DST3FL_IMPL_R(
I bi,bj,k, iMin,iMax,jMin,jMax,
I deltaTarg, rTrans, tFld,
O a5d, b5d, c5d, d5d, e5d,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
INTEGER iMin,iMax,jMin,jMax
Real*8 deltaTarg(Nr)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 a5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 b5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 c5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 d5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 e5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
INTEGER i,j,kp1,km2
Real*8 wCFL, rCenter, rUpwind
Real*8 lowFac (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 highFac(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rC4km, rC4kp
Real*8 mskM, mskP, maskM2, maskP1
Real*8 Rj, Rjh, cL1, cH3, cM2, th1, th2
Real*8 deltaTcfl
IF ( k.GT.1 .AND. k.LE.Nr ) THEN
km2=MAX(1,k-2)
kp1=MIN(Nr,k+1)
maskP1 = 1.d0
maskM2 = 1.d0
IF ( k.LE.2 ) maskM2 = 0.d0
IF ( k.GE.Nr) maskP1 = 0.d0
deltaTcfl = deltaTarg(k)
DO j=jMin,jMax
DO i=iMin,iMax
wCFL = deltaTcfl*ABS(rTrans(i,j))
& *recip_rA(i,j,bi,bj)*recip_drC(k)
cL1 = (2.d0 -wCFL)*(1.d0 -wCFL)*oneSixth
cH3 = (1.d0 -wCFL*wCFL)*oneSixth
cM2 = (1.d0 + wCFL)/( wCFL +1.D-20)
Rj =(tFld(i,j,k) -tFld(i,j,k-1))
IF ( rTrans(i,j).GT.0.d0 ) THEN
Rjh = (tFld(i,j,k-1)-tFld(i,j,km2))*maskC(i,j,km2,bi,bj)
ELSE
Rjh = (tFld(i,j,kp1)-tFld(i,j,k) )*maskC(i,j,kp1,bi,bj)
ENDIF
IF ( Rj*Rjh.LE.0.d0 ) THEN
lowFac(i,j) = 0.d0
highFac(i,j)= 0.d0
ELSE
Rj = ABS(Rj)
Rjh = ABS(Rjh)
th1 = cL1*Rj+cH3*Rjh
th2 = cM2*Rjh
IF ( th1.LE.th2 .AND. th1.LE.Rj ) THEN
lowFac(i,j) = cL1
highFac(i,j)= cH3
ELSEIF ( th2.LT.th1 .AND. th2.LE.Rj ) THEN
lowFac(i,j) = 0.d0
highFac(i,j)= cM2
ELSE
lowFac(i,j) = 1.d0
highFac(i,j)= 0.d0
ENDIF
ENDIF
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
rCenter= 0.5d0 *rTrans(i,j)*recip_rA(i,j,bi,bj)*rkSign
mskM = maskC(i,j,km2,bi,bj)*maskM2
mskP = maskC(i,j,kp1,bi,bj)*maskP1
rUpwind= (0.5d0 -lowFac(i,j))*ABS(rCenter)*2.d0
rC4km = highFac(i,j)*(rCenter+ABS(rCenter))*mskM
rC4kp = highFac(i,j)*(rCenter-ABS(rCenter))*mskP
a5d(i,j,k) = a5d(i,j,k)
& + rC4km
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b5d(i,j,k) = b5d(i,j,k)
& - ( (rCenter+rUpwind) + rC4km )
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
c5d(i,j,k) = c5d(i,j,k)
& - ( (rCenter-rUpwind) + rC4kp )
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
d5d(i,j,k) = d5d(i,j,k)
& + rC4kp
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b5d(i,j,k-1) = b5d(i,j,k-1)
& - rC4km
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
c5d(i,j,k-1) = c5d(i,j,k-1)
& + ( (rCenter+rUpwind) + rC4km )
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
d5d(i,j,k-1) = d5d(i,j,k-1)
& + ( (rCenter-rUpwind) + rC4kp )
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
e5d(i,j,k-1) = e5d(i,j,k-1)
& - rC4kp
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_FLUXLIMIT_ADV_R(
I bi,bj,k,dTarg,
I rTrans, wFld,
I tracer,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
Real*8 dTarg
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1,km1,km2
Real*8 Cr,Rjm,Rj,Rjp
Real*8 wLoc, wCFL
C
Real*8 Limiter
Limiter(Cr)=max(0.d0,max(min(1.d0,2.d0*Cr),
& min(2.d0,Cr)))
km2=MAX(1,k-2)
km1=MAX(1,k-1)
kp1=MIN(Nr,k+1)
IF ( k.GT.Nr) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wT(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wLoc = wFld(i,j)
wCFL = ABS( wLoc*dTarg*recip_drC(k) )
Rjp=(tracer(i,j,kp1)-tracer(i,j,k))
& *maskC(i,j,kp1,bi,bj)
Rj= (tracer(i,j,k) -tracer(i,j,kM1))
Rjm=(tracer(i,j,km1)-tracer(i,j,kM2))
& *maskC(i,j,km2,bi,bj)
IF (Rj.NE.0.) THEN
IF (rTrans(i,j).LT.0.) THEN
Cr=Rjm/Rj
ELSE
Cr=Rjp/Rj
ENDIF
ELSE
IF (rTrans(i,j).LT.0.) THEN
Cr=Rjm*1.E20
ELSE
Cr=Rjp*1.E20
ENDIF
ENDIF
Cr=Limiter(Cr)
wT(i,j) = maskC(i,j,kM1,bi,bj)*(
& rTrans(i,j)*
& (tracer(i,j,k)+tracer(i,j,kM1))*0.5d0
& +ABS(rTrans(i,j))*((1.-Cr)+wCFL*Cr)
& *Rj*0.5d0 )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_FLUXLIMIT_IMPL_R(
I bi,bj,k, iMin,iMax,jMin,jMax,
I deltaTarg, rTrans, tFld,
O a3d, b3d, c3d,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
INTEGER iMin,iMax,jMin,jMax
Real*8 deltaTarg(Nr)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 a3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 b3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 c3d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
INTEGER i,j,kp1,km1,km2
Real*8 Cr,Rjm,Rj,Rjp, w_CFL
Real*8 upwindFac(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rCenter, rUpwind
Real*8 deltaTcfl
C
Real*8 Limiter
Limiter(Cr)=max(0.d0,max(min(1.d0,2.d0*Cr),
& min(2.d0,Cr)))
km2=MAX(1,k-2)
km1=MAX(1,k-1)
kp1=MIN(Nr,k+1)
IF ( k.GT.1 .AND. k.LE.Nr ) THEN
deltaTcfl = deltaTarg(k)
DO j=jMin,jMax
DO i=iMin,iMax
w_CFL = deltaTcfl*rTrans(i,j)*recip_rA(i,j,bi,bj)*recip_drC(k)
Rjp=(tFld(i,j,kp1)-tFld(i,j,k) )*maskC(i,j,kp1,bi,bj)
Rj =(tFld(i,j,k) -tFld(i,j,km1))
Rjm=(tFld(i,j,km1)-tFld(i,j,km2))*maskC(i,j,km2,bi,bj)
IF ( Rj.NE.0.d0) THEN
IF (rTrans(i,j).LT.0.d0) THEN
Cr=Rjm/Rj
ELSE
Cr=Rjp/Rj
ENDIF
upwindFac(i,j) = 1.d0
& - Limiter(Cr) * ( 1.d0 + ABS(w_CFL) )
upwindFac(i,j) = MAX( -1.d0, upwindFac(i,j) )
ELSE
upwindFac(i,j) = 0.d0
ENDIF
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
rCenter = 0.5d0 *rTrans(i,j)*recip_rA(i,j,bi,bj)*rkSign
rUpwind = ABS(rCenter)*upwindFac(i,j)
a3d(i,j,k) = a3d(i,j,k)
& - (rCenter+rUpwind)*deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b3d(i,j,k) = b3d(i,j,k)
& - (rCenter-rUpwind)*deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b3d(i,j,k-1) = b3d(i,j,k-1)
& + (rCenter+rUpwind)*deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
c3d(i,j,k-1) = c3d(i,j,k-1)
& + (rCenter-rUpwind)*deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_FLUXLIMIT_ADV_X(
I bi,bj,k, calcCFL, deltaTloc,
I uTrans, uFld,
I maskLocW, tracer,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocW(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Cr,Rjm,Rj,Rjp
Real*8 uCFL
C
Real*8 Limiter
Limiter(Cr)=max(0.d0,max(min(1.d0,2.d0*Cr),
& min(2.d0,Cr)))
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.
uT(2-Olx,j)=0.
uT(sNx+Olx,j)=0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+2,sNx+Olx-1
uCFL = uFld(i,j)
IF ( calcCFL ) uCFL = ABS( uFld(i,j)*deltaTloc
& *recip_dxC(i,j,bi,bj)*recip_deepFacC(k) )
Rjp=(tracer(i+1,j)-tracer( i ,j))*maskLocW(i+1,j)
Rj =(tracer( i ,j)-tracer(i-1,j))*maskLocW( i ,j)
Rjm=(tracer(i-1,j)-tracer(i-2,j))*maskLocW(i-1,j)
IF (Rj.NE.0.) THEN
IF (uTrans(i,j).GT.0) THEN
Cr=Rjm/Rj
ELSE
Cr=Rjp/Rj
ENDIF
ELSE
IF (uTrans(i,j).GT.0) THEN
Cr=Rjm*1.E20
ELSE
Cr=Rjp*1.E20
ENDIF
ENDIF
Cr=Limiter(Cr)
uT(i,j) =
& uTrans(i,j)*(Tracer(i,j)+Tracer(i-1,j))*0.5d0
& -ABS(uTrans(i,j))*((1.-Cr)+uCFL*Cr)
& *Rj*0.5d0
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_FLUXLIMIT_ADV_Y(
I bi,bj,k, calcCFL, deltaTloc,
I vTrans, vFld,
I maskLocS, tracer,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Cr,Rjm,Rj,Rjp
Real*8 vCFL
C
Real*8 Limiter
Limiter(Cr)=max(0.d0,max(min(1.d0,2.d0*Cr),
& min(2.d0,Cr)))
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.
vT(i,2-Oly)=0.
vT(i,sNy+Oly)=0.
ENDDO
DO j=1-Oly+2,sNy+Oly-1
DO i=1-Olx,sNx+Olx
vCFL = vFld(i,j)
IF ( calcCFL ) vCFL = ABS( vFld(i,j)*deltaTloc
& *recip_dyC(i,j,bi,bj)*recip_deepFacC(k) )
Rjp=(tracer(i,j+1)-tracer(i, j ))*maskLocS(i,j+1)
Rj =(tracer(i, j )-tracer(i,j-1))*maskLocS(i, j )
Rjm=(tracer(i,j-1)-tracer(i,j-2))*maskLocS(i,j-1)
IF (Rj.NE.0.) THEN
IF (vTrans(i,j).GT.0) THEN
Cr=Rjm/Rj
ELSE
Cr=Rjp/Rj
ENDIF
ELSE
IF (vTrans(i,j).GT.0) THEN
Cr=Rjm*1.E20
ELSE
Cr=Rjp*1.E20
ENDIF
ENDIF
Cr=Limiter(Cr)
vT(i,j) =
& vTrans(i,j)*(Tracer(i,j)+Tracer(i,j-1))*0.5d0
& -ABS(vTrans(i,j))*((1.-Cr)+vCFL*Cr)
& *Rj*0.5d0
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_GRAD_X(
I bi,bj,k,
I xA,
U tracer,
O dTdx,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dTdx (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
IF (useCubedSphereExchange) THEN
CALL FILL_CS_CORNER_TR_RL( 1, .FALSE.,
& tracer, bi,bj, myThid )
ENDIF
DO j=1-Oly,sNy+Oly
dTdx(1-Olx,j)=0.
DO i=1-Olx+1,sNx+Olx
dTdx(i,j) = xA(i,j)
& *recip_dxC(i,j,bi,bj)*recip_deepFacC(k)
& *(tracer(i,j)-tracer(i-1,j))
& *sqCosFacU(j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_GRAD_Y(
I bi,bj,k,
I yA,
U tracer,
O dTdy,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dTdy (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
IF (useCubedSphereExchange) THEN
CALL FILL_CS_CORNER_TR_RL( 2, .FALSE.,
& tracer, bi,bj, myThid )
ENDIF
DO i=1-Olx,sNx+Olx
dTdy(I,1-Oly)=0.
ENDDO
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
dTdy(i,j) = yA(i,j)
& *recip_dyC(i,j,bi,bj)*recip_deepFacC(k)
& *(tracer(i,j)-tracer(i,j-1))
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_IMPLICIT_R(
I implicitAdvection, advectionScheme, tracerIdentity,
I deltaTLev,
I kappaRX, wVel, tracer,
U gTracer,
I bi, bj, myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
LOGICAL implicitAdvection
INTEGER advectionScheme
INTEGER tracerIdentity
Real*8 deltaTLev(Nr)
Real*8 kappaRX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 wVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 tracer (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 gTracer(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER bi, bj
Real*8 myTime
INTEGER myIter, myThid
INTEGER iMin,iMax,jMin,jMax
INTEGER i,j,k
INTEGER diagonalNumber, errCode
Real*8 a5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 b5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 c5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 d5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 e5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 wFld (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rTrans (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rTransKp1(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 localTijk(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
IF (Nr.GT.1) THEN
iMin = 1
jMin = 1
iMax = sNx
jMax = sNy
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
a5d(i,j,k) = 0.d0
b5d(i,j,k) = 0.d0
c5d(i,j,k) = 1.d0
d5d(i,j,k) = 0.d0
e5d(i,j,k) = 0.d0
ENDDO
ENDDO
ENDDO
diagonalNumber = 1
IF ( advectionScheme.EQ.ENUM_FLUX_LIMIT .OR.
& advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
IF ( multiDimAdvection ) THEN
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
localTijk(i,j,k) = gTracer(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ELSE
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
localTijk(i,j,k) = tracer(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ENDIF
ENDIF
IF (implicitDiffusion) THEN
diagonalNumber = 3
DO k=2,Nr
DO j=jMin,jMax
DO i=iMin,iMax
b5d(i,j,k) = -deltaTLev(k)*maskC(i,j,k-1,bi,bj)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *kappaRX(i,j, k )*recip_drC( k )
ENDDO
ENDDO
ENDDO
DO k=1,Nr-1
DO j=jMin,jMax
DO i=iMin,iMax
d5d(i,j,k) = -deltaTLev(k)*maskC(i,j,k+1,bi,bj)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *KappaRX(i,j,k+1)*recip_drC(k+1)
ENDDO
ENDDO
ENDDO
DO k=1,Nr
DO j=jMin,jMax
DO i=iMin,iMax
c5d(i,j,k) = 1.d0 - b5d(i,j,k) - d5d(i,j,k)
ENDDO
ENDDO
ENDDO
ENDIF
IF (implicitAdvection) THEN
DO k=Nr,1,-1
IF (k.EQ.Nr) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rTransKp1(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rTransKp1(i,j) = rTrans(i,j)
ENDDO
ENDDO
ENDIF
IF (k.EQ.1) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wFld(i,j) = 0.d0
rTrans(i,j) = 0.d0
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wFld(i,j) = wVel(i,j,k,bi,bj)
rTrans(i,j) = wFld(i,j)*rA(i,j,bi,bj)*maskC(i,j,k-1,bi,bj)
ENDDO
ENDDO
IF (useGMRedi)
& CALL GMREDI_CALC_WFLOW(
U wFld, rTrans,
I k, bi, bj, myThid )
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gTracer(i,j,k,bi,bj) = gTracer(i,j,k,bi,bj)
& + deltaTLev(1)*recip_rA(i,j,bi,bj)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
& *tracer(i,j,k,bi,bj)*(rTransKp1(i,j)-rTrans(i,j))*rkSign
ENDDO
ENDDO
IF ( K.GE.2 ) THEN
IF ( advectionScheme.EQ.ENUM_CENTERED_2ND ) THEN
diagonalNumber = 3
CALL GAD_C2_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
I deltaTLev, rTrans,
U b5d, c5d, d5d,
I myThid )
ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_1RST
& .OR. advectionScheme.EQ.ENUM_DST2 ) THEN
diagonalNumber = 3
CALL GAD_DST2U1_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
I advectionScheme, deltaTLev, rTrans,
U b5d, c5d, d5d,
I myThid )
ELSEIF ( advectionScheme.EQ.ENUM_FLUX_LIMIT ) THEN
diagonalNumber = 3
CALL GAD_FLUXLIMIT_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
I deltaTLev, rTrans, localTijk,
U b5d, c5d, d5d,
I myThid )
ELSEIF ( advectionScheme.EQ.ENUM_UPWIND_3RD
& .OR. advectionScheme.EQ.ENUM_CENTERED_4TH
& .OR. advectionScheme.EQ.ENUM_DST3 ) THEN
diagonalNumber = 5
CALL GAD_U3C4_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
I advectionScheme, deltaTLev, rTrans,
U a5d, b5d, c5d, d5d, e5d,
I myThid )
ELSEIF ( advectionScheme.EQ.ENUM_DST3_FLUX_LIMIT ) THEN
diagonalNumber = 5
CALL GAD_DST3FL_IMPL_R( bi,bj,k, iMin,iMax,jMin,jMax,
I deltaTLev, rTrans, localTijk,
U a5d, b5d, c5d, d5d, e5d,
I myThid )
ELSE
STOP 'GAD_IMPLICIT_R: Adv.Scheme in Impl form not yet coded'
ENDIF
ENDIF
ENDDO
ENDIF
IF ( diagonalNumber .EQ. 3 ) THEN
CALL SOLVE_TRIDIAGONAL( iMin,iMax, jMin,jMax,
I b5d, c5d, d5d,
U gTracer,
O errCode,
I bi, bj, myThid )
IF (errCode.GE.1) THEN
STOP 'GAD_IMPLICIT_R: error when solving 3-Diag problem'
ENDIF
ELSEIF ( diagonalNumber .EQ. 5 ) THEN
CALL SOLVE_PENTADIAGONAL( iMin,iMax, jMin,jMax,
I a5d, b5d, c5d, d5d, e5d,
U gTracer,
O errCode,
I bi, bj, myThid )
IF (errCode.GE.1) THEN
STOP 'GAD_IMPLICIT_R: error when solving 5-Diag problem'
ENDIF
ELSEIF ( diagonalNumber .NE. 1 ) THEN
STOP 'GAD_IMPLICIT_R: no solver available'
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_INIT_VARIA( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_OS7MP_ADV_X(
I bi,bj,k, calcCFL, deltaTloc,
I uTrans, uFld,
I maskLocW, Q,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocW(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 Q (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
Real*8 cfl,Psi
Real*8 uLoc,Fac,DelIp,DelI,Phi,Eps,rp1h,rp1h_cfl
Real*8 recip_DelIp, recip_DelI
Real*8 Qippp,Qipp,Qip,Qi,Qim,Qimm,Qimmm
Real*8 MskIpp,MskIp,MskI,MskIm,MskImm,MskImmm
Real*8 d2,d2p1,d2m1,A,B,C,D
Real*8 dp1h,dm1h, PhiMD,PhiLC,PhiMin,PhiMax
Real*8 DelM,DelP,DelMM,DelPP,DelMMM,DelPPP
Real*8 Del2MM,Del2M,Del2,Del2P,Del2PP
Real*8 Del3MM,Del3M,Del3P,Del3PP
Real*8 Del4M,Del4,Del4P
Real*8 Del5M,Del5P
Real*8 Del6
Eps = 1.D-20
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.d0
uT(2-Olx,j)=0.d0
uT(3-Olx,j)=0.d0
uT(4-Olx,j)=0.d0
uT(sNx+Olx-2,j)=0.d0
uT(sNx+Olx-1,j)=0.d0
uT(sNx+Olx,j)=0.d0
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+4,sNx+Olx-3
uLoc = uFld(i,j)
cfl = uLoc
IF ( calcCFL ) cfl = abs(uLoc*deltaTloc*recip_dxC(i,j,bi,bj))
IF (uTrans(i,j).GT.0.d0) THEN
Qippp = Q(i+2,j)
Qipp = Q(i+1,j)
Qip = Q(i,j)
Qi = Q(i-1,j)
Qim = Q(i-2,j)
Qimm = Q(i-3,j)
Qimmm = Q(i-4,j)
MskIpp = maskLocW(i+2,j)
MskIp = maskLocW(i+1,j)
MskI = maskLocW(i,j)
MskIm = maskLocW(i-1,j)
MskImm = maskLocW(i-2,j)
MskImmm = maskLocW(i-3,j)
ELSEIF (uTrans(i,j).LT.0.d0) THEN
Qippp = Q(i-3,j)
Qipp = Q(i-2,j)
Qip = Q(i-1,j)
Qi = Q(i,j)
Qim = Q(i+1,j)
Qimm = Q(i+2,j)
Qimmm = Q(i+3,j)
MskIpp = maskLocW(i-2,j)
MskIp = maskLocW(i-1,j)
MskI = maskLocW(i,j)
MskIm = maskLocW(i+1,j)
MskImm = maskLocW(i+2,j)
MskImmm = maskLocW(i+3,j)
ELSE
Qippp = 0.d0
Qipp = 0.d0
Qip = 0.d0
Qi = 0.d0
Qim = 0.d0
Qimm = 0.d0
Qimmm = 0.d0
MskIpp = 0.d0
MskIp = 0.d0
MskI = 0.d0
MskIm = 0.d0
MskImm = 0.d0
MskImmm = 0.d0
ENDIF
IF (uTrans(i,j).NE.0.d0) THEN
Fac = 1.d0
DelP = (Qip-Qi)*MskI
Phi = Fac * DelP
Fac = Fac * ( cfl + 1.d0 )/3.d0
DelM = (Qi-Qim)*MskIm
Del2 = DelP - DelM
Phi = Phi - Fac * Del2
Fac = Fac * ( cfl - 2.d0 )/4.d0
DelPP = (Qipp-Qip)*MskIp*MskI
Del2P = DelPP - DelP
Del3P = Del2P - Del2
Phi = Phi + Fac * Del3p
Fac = Fac * ( cfl - 3.d0 )/5.d0
DelMM = (Qim-Qimm)*MskImm*MskIm
Del2M = DelM - DelMM
Del3M = Del2 - Del2M
Del4 = Del3P - Del3M
Phi = Phi + Fac * Del4
Fac = Fac * ( cfl + 2.d0 )/6.d0
DelPPP = (Qippp-Qipp)*MskIpp*MskIp*MskI
Del2PP = DelPP - DelP
Del3PP = Del2PP - Del2P
Del4P = Del3PP - Del3P
Del5P = Del4P - Del4
Phi = Phi + Fac * Del5P
Fac = Fac * ( cfl + 2.d0 )/7.d0
DelMMM = (Qimm-Qimmm)*MskImmm*MskImm*MskIm
Del2MM = DelMM - DelMMM
Del3MM = Del2M - Del2MM
Del4M = Del3M - Del3MM
Del5M = Del4 - Del4M
Del6 = Del5P - Del5M
Phi = Phi - Fac * Del6
DelIp = ( Qip - Qi ) * MskI
recip_DelIp = sign(1.d0,DelIp)/max(abs(DelIp),Eps)
Phi = Phi*recip_DelIp
DelI = ( Qi - Qim ) * MskIm
recip_DelI = sign(1.d0,DelI)/max(abs(DelI),Eps)
rp1h = DelI*recip_DelIp
rp1h_cfl = rp1h/(cfl+Eps)
d2 = Del2 !( ( Qip + Qim ) - 2.*Qi ) * MskI * MskIm
d2p1 = Del2P !( ( Qipp + Qi ) - 2.*Qip ) * MskIp * MskI
d2m1 = Del2M !( ( Qi + Qimm ) - 2.*Qim ) * MskIm * MskImm
A = 4.d0*d2 - d2p1
B = 4.d0*d2p1 - d2
C = d2
D = d2p1
dp1h = max(min(A,B,C,D),0.d0)+min(max(A,B,C,D),0.d0)
A = 4.d0*d2m1 - d2
B = 4.d0*d2 - d2m1
C = d2m1
D = d2
dm1h = max(min(A,B,C,D),0.d0)+min(max(A,B,C,D),0.d0)
PhiMD = 1.d0/(1.d0-cfl)*(DelIp-dp1h)*recip_DelIp
PhiLC = rp1h_cfl*( 1.d0+dm1h*recip_DelI )
PhiMin = max( min(0.d0,PhiMD),
& min(0.d0,2.d0*rp1h_cfl,PhiLC) )
PhiMax = min( max(2.d0/(1.d0-cfl),PhiMD),
& max(0.d0,2.d0*rp1h_cfl,PhiLC) )
Phi = max(PhiMin,min(Phi,PhiMax))
Psi = Phi * 0.5d0 * (1.d0 - cfl)
uT(i,j) = uTrans(i,j)*( Qi + Psi*DelIp )
ELSE
uT(i,j) = 0.d0
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_OS7MP_ADV_Y(
I bi,bj,k, calcCFL, deltaTloc,
I vTrans, vFld,
I maskLocS, Q,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
LOGICAL calcCFL
Real*8 deltaTloc
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskLocS(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 Q (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
Real*8 cfl,Psi
Real*8 vLoc,Fac,DelIp,DelI,Phi,Eps,rp1h,rp1h_cfl
Real*8 recip_DelIp, recip_DelI
Real*8 Qippp,Qipp,Qip,Qi,Qim,Qimm,Qimmm
Real*8 MskIpp,MskIp,MskI,MskIm,MskImm,MskImmm
Real*8 d2,d2p1,d2m1,A,B,C,D
Real*8 dp1h,dm1h, PhiMD,PhiLC,PhiMin,PhiMax
Real*8 DelM,DelP,DelMM,DelPP,DelMMM,DelPPP
Real*8 Del2MM,Del2M,Del2,Del2P,Del2PP
Real*8 Del3MM,Del3M,Del3P,Del3PP
Real*8 Del4M,Del4,Del4P
Real*8 Del5M,Del5P
Real*8 Del6
Eps = 1.D-20
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.d0
vT(i,2-Oly)=0.d0
vT(i,3-Oly)=0.d0
vT(i,4-Oly)=0.d0
vT(i,sNy+Oly-2)=0.d0
vT(i,sNy+Oly-1)=0.d0
vT(i,sNy+Oly)=0.d0
ENDDO
DO j=1-Oly+4,sNy+Oly-3
DO i=1-Olx,sNx+Olx
vLoc = vFld(i,j)
cfl = vLoc
IF ( calcCFL ) cfl = abs(vLoc*deltaTloc*recip_dyC(i,j,bi,bj))
IF (vTrans(i,j).GT.0.d0) THEN
Qippp = Q(i,j+2)
Qipp = Q(i,j+1)
Qip = Q(i,j)
Qi = Q(i,j-1)
Qim = Q(i,j-2)
Qimm = Q(i,j-3)
Qimmm = Q(i,j-4)
MskIpp = maskLocS(i,j+2)
MskIp = maskLocS(i,j+1)
MskI = maskLocS(i,j)
MskIm = maskLocS(i,j-1)
MskImm = maskLocS(i,j-2)
MskImmm = maskLocS(i,j-3)
ELSEIF (vTrans(i,j).LT.0.d0) THEN
Qippp = Q(i,j-3)
Qipp = Q(i,j-2)
Qip = Q(i,j-1)
Qi = Q(i,j)
Qim = Q(i,j+1)
Qimm = Q(i,j+2)
Qimmm = Q(i,j+3)
MskIpp = maskLocS(i,j-2)
MskIp = maskLocS(i,j-1)
MskI = maskLocS(i,j)
MskIm = maskLocS(i,j+1)
MskImm = maskLocS(i,j+2)
MskImmm = maskLocS(i,j+3)
ELSE
Qippp = 0.d0
Qipp = 0.d0
Qip = 0.d0
Qi = 0.d0
Qim = 0.d0
Qimm = 0.d0
Qimmm = 0.d0
MskIpp = 0.d0
MskIp = 0.d0
MskI = 0.d0
MskIm = 0.d0
MskImm = 0.d0
MskImmm = 0.d0
ENDIF
IF (vTrans(i,j).NE.0.d0) THEN
Fac = 1.d0
DelP = (Qip-Qi)*MskI
Phi = Fac * DelP
Fac = Fac * ( cfl + 1.d0 )/3.d0
DelM = (Qi-Qim)*MskIm
Del2 = DelP - DelM
Phi = Phi - Fac * Del2
Fac = Fac * ( cfl - 2.d0 )/4.d0
DelPP = (Qipp-Qip)*MskIp*MskI
Del2P = DelPP - DelP
Del3P = Del2P - Del2
Phi = Phi + Fac * Del3p
Fac = Fac * ( cfl - 3.d0 )/5.d0
DelMM = (Qim-Qimm)*MskImm*MskIm
Del2M = DelM - DelMM
Del3M = Del2 - Del2M
Del4 = Del3P - Del3M
Phi = Phi + Fac * Del4
Fac = Fac * ( cfl + 2.d0 )/6.d0
DelPPP = (Qippp-Qipp)*MskIpp*MskIp*MskI
Del2PP = DelPP - DelP
Del3PP = Del2PP - Del2P
Del4P = Del3PP - Del3P
Del5P = Del4P - Del4
Phi = Phi + Fac * Del5P
Fac = Fac * ( cfl + 2.d0 )/7.d0
DelMMM = (Qimm-Qimmm)*MskImmm*MskImm*MskIm
Del2MM = DelMM - DelMMM
Del3MM = Del2M - Del2MM
Del4M = Del3M - Del3MM
Del5M = Del4 - Del4M
Del6 = Del5P - Del5M
Phi = Phi - Fac * Del6
DelIp = ( Qip - Qi ) * MskI
recip_DelIp = sign(1.d0,DelIp)/max(abs(DelIp),Eps)
Phi = Phi*recip_DelIp
DelI = ( Qi - Qim ) * MskIm
recip_DelI = sign(1.d0,DelI)/max(abs(DelI),Eps)
rp1h = DelI*recip_DelIp
rp1h_cfl = rp1h/(cfl+Eps)
d2 = Del2 !( ( Qip + Qim ) - 2.*Qi ) * MskI * MskIm
d2p1 = Del2P !( ( Qipp + Qi ) - 2.*Qip ) * MskIp * MskI
d2m1 = Del2M !( ( Qi + Qimm ) - 2.*Qim ) * MskIm * MskImm
A = 4.d0*d2 - d2p1
B = 4.d0*d2p1 - d2
C = d2
D = d2p1
dp1h = max(min(A,B,C,D),0.d0)+min(max(A,B,C,D),0.d0)
A = 4.d0*d2m1 - d2
B = 4.d0*d2 - d2m1
C = d2m1
D = d2
dm1h = max(min(A,B,C,D),0.d0)+min(max(A,B,C,D),0.d0)
PhiMD = 1.d0/(1.d0-cfl)*(DelIp-dp1h)*recip_DelIp
PhiLC = rp1h_cfl*( 1.d0+dm1h*recip_DelI )
PhiMin = max( min(0.d0,PhiMD),
& min(0.d0,2.d0*rp1h_cfl,PhiLC) )
PhiMax = min( max(2.d0/(1.d0-cfl),PhiMD),
& max(0.d0,2.d0*rp1h_cfl,PhiLC) )
Phi = max(PhiMin,min(Phi,PhiMax))
Psi = Phi * 0.5d0 * (1.d0 - cfl)
vT(i,j) = vTrans(i,j)*( Qi + Psi*DelIp )
ELSE
vT(i,j) = 0.d0
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_OS7MP_ADV_R(
I bi,bj,k,deltaTloc,
I wTrans, wFld,
I Q,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 deltaTloc
Real*8 wTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 Q (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j,kp3,kp2,kp1,km1,km2,km3,km4
Real*8 cfl,Psi
Real*8 wLoc,Fac,DelIp,DelI,Phi,Eps,rp1h,rp1h_cfl
Real*8 recip_DelIp, recip_DelI
Real*8 Qippp,Qipp,Qip,Qi,Qim,Qimm,Qimmm
Real*8 MskIpp,MskIp,MskI,MskIm,MskImm,MskImmm
Real*8 d2,d2p1,d2m1,A,B,C,D
Real*8 dp1h,dm1h, PhiMD,PhiLC,PhiMin,PhiMax
Real*8 DelM,DelP,DelMM,DelPP,DelMMM,DelPPP
Real*8 Del2MM,Del2M,Del2,Del2P,Del2PP
Real*8 Del3MM,Del3M,Del3P,Del3PP
Real*8 Del4M,Del4,Del4P
Real*8 Del5M,Del5P
Real*8 Del6
Eps = 1.D-20
km4=MAX(1,k-4)
km3=MAX(1,k-3)
km2=MAX(1,k-2)
km1=MAX(1,k-1)
kp1=MIN(Nr,k+1)
kp2=MIN(Nr,k+2)
kp3=MIN(Nr,k+3)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wLoc = wFld(i,j)
cfl = abs(wLoc*deltaTloc*recip_drC(k))
IF (wTrans(i,j).LT.0.d0) THEN
Qippp = Q(i,j,kp2)
Qipp = Q(i,j,kp1)
Qip = Q(i,j,k)
Qi = Q(i,j,km1)
Qim = Q(i,j,km2)
Qimm = Q(i,j,km3)
Qimmm = Q(i,j,km4)
MskIpp = maskC(i,j,kp2,bi,bj) * float(kp2-kp1)
MskIp = maskC(i,j,kp1,bi,bj) * float(kp1-k)
MskI = maskC(i,j,k,bi,bj) * float(k-km1)
MskIm = maskC(i,j,km1,bi,bj) * float(km1-km2)
MskImm = maskC(i,j,km2,bi,bj) * float(km2-km3)
MskImmm = maskC(i,j,km3,bi,bj) * float(km3-km4)
ELSEIF (wTrans(i,j).GT.0.d0) THEN
Qippp = Q(i,j,km3)
Qipp = Q(i,j,km2)
Qip = Q(i,j,km1)
Qi = Q(i,j,k)
Qim = Q(i,j,kp1)
Qimm = Q(i,j,kp2)
Qimmm = Q(i,j,kp3)
MskIpp = maskC(i,j,km2,bi,bj) * float(km2-km3)
MskIp = maskC(i,j,km1,bi,bj) * float(km1-km2)
MskI = maskC(i,j,k,bi,bj) * float(k-km1)
MskIm = maskC(i,j,kp1,bi,bj) * float(kp1-k)
MskImm = maskC(i,j,kp2,bi,bj) * float(kp2-kp1)
MskImmm = maskC(i,j,kp3,bi,bj) * float(kp3-kp2)
ELSE
Qippp = 0.d0
Qipp = 0.d0
Qip = 0.d0
Qi = 0.d0
Qim = 0.d0
Qimm = 0.d0
Qimmm = 0.d0
MskIpp = 0.d0
MskIp = 0.d0
MskI = 0.d0
MskIm = 0.d0
MskImm = 0.d0
MskImmm = 0.d0
ENDIF
IF (wTrans(i,j).NE.0.d0) THEN
Fac = 1.d0
DelP = (Qip-Qi)*MskI
Phi = Fac * DelP
Fac = Fac * ( cfl + 1.d0 )/3.d0
DelM = (Qi-Qim)*MskIm
Del2 = DelP - DelM
Phi = Phi - Fac * Del2
Fac = Fac * ( cfl - 2.d0 )/4.d0
DelPP = (Qipp-Qip)*MskIp*MskI
Del2P = DelPP - DelP
Del3P = Del2P - Del2
Phi = Phi + Fac * Del3p
Fac = Fac * ( cfl - 3.d0 )/5.d0
DelMM = (Qim-Qimm)*MskImm*MskIm
Del2M = DelM - DelMM
Del3M = Del2 - Del2M
Del4 = Del3P - Del3M
Phi = Phi + Fac * Del4
Fac = Fac * ( cfl + 2.d0 )/6.d0
DelPPP = (Qippp-Qipp)*MskIpp*MskIp*MskI
Del2PP = DelPP - DelP
Del3PP = Del2PP - Del2P
Del4P = Del3PP - Del3P
Del5P = Del4P - Del4
Phi = Phi + Fac * Del5P
Fac = Fac * ( cfl + 2.d0 )/7.d0
DelMMM = (Qimm-Qimmm)*MskImmm*MskImm*MskIm
Del2MM = DelMM - DelMMM
Del3MM = Del2M - Del2MM
Del4M = Del3M - Del3MM
Del5M = Del4 - Del4M
Del6 = Del5P - Del5M
Phi = Phi - Fac * Del6
DelIp = ( Qip - Qi ) * MskI
recip_DelIp = sign(1.d0,DelIp)/max(abs(DelIp),Eps)
Phi = Phi*recip_DelIp
DelI = ( Qi - Qim ) * MskIm
recip_DelI = sign(1.d0,DelI)/max(abs(DelI),Eps)
rp1h = DelI*recip_DelIp
rp1h_cfl = rp1h/(cfl+Eps)
d2 = Del2 !( ( Qip + Qim ) - 2.*Qi ) * MskI * MskIm
d2p1 = Del2P !( ( Qipp + Qi ) - 2.*Qip ) * MskIp * MskI
d2m1 = Del2M !( ( Qi + Qimm ) - 2.*Qim ) * MskIm * MskImm
A = 4.d0*d2 - d2p1
B = 4.d0*d2p1 - d2
C = d2
D = d2p1
dp1h = max(min(A,B,C,D),0.d0)+min(max(A,B,C,D),0.d0)
A = 4.d0*d2m1 - d2
B = 4.d0*d2 - d2m1
C = d2m1
D = d2
dm1h = max(min(A,B,C,D),0.d0)+min(max(A,B,C,D),0.d0)
PhiMD = 1.d0/(1.d0-cfl)*(DelIp-dp1h)*recip_DelIp
PhiLC = rp1h_cfl*( 1.d0+dm1h*recip_DelI )
PhiMin = max(min(0.d0,PhiMD),
& min(0.d0,2.d0*rp1h_cfl,PhiLC))
PhiMax = min(max(2.d0/(1.d0-cfl),PhiMD),
& max(0.d0,2.d0*rp1h_cfl,PhiLC))
Phi = max(PhiMin,min(Phi,PhiMax))
Psi = Phi * 0.5d0 * (1.d0 - cfl)
wT(i,j) = wTrans(i,j)*( Qi + Psi*DelIp )
ELSE
wT(i,j) = 0.d0
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_U3_ADV_R(
I bi,bj,k,
I rTrans,
I tracer,
O wT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 wT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1,km1,km2
Real*8 Rjm,Rj,Rjp,Rjjm,Rjjp
km2=MAX(1,k-2)
km1=MAX(1,k-1)
kp1=MIN(Nr,k+1)
IF ( k.EQ.1 .OR. k.GT.Nr ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wT(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
Rjp=(tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))
& *maskC(i,j,kp1,bi,bj)
Rj=(tracer(i,j,k,bi,bj)-tracer(i,j,km1,bi,bj))
Rjm=(tracer(i,j,km1,bi,bj)-tracer(i,j,km2,bi,bj))
& *maskC(i,j,km2,bi,bj)
Rjjp=Rjp-Rj
Rjjm=Rj-Rjm
wT(i,j) = maskC(i,j,km1,bi,bj)*(
& rTrans(i,j)*(
& (Tracer(i,j,k,bi,bj)+Tracer(i,j,km1,bi,bj))*0.5d0
& -oneSixth*(Rjjm+Rjjp)*0.5d0 )
& +ABS(rTrans(i,j))*
& oneSixth*(Rjjm-Rjjp)*0.5d0
& )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_U3C4_IMPL_R(
I bi,bj,k, iMin,iMax,jMin,jMax,
I advectionScheme, deltaTarg, rTrans,
O a5d, b5d, c5d, d5d, e5d,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
INTEGER iMin,iMax,jMin,jMax
INTEGER advectionScheme
Real*8 deltaTarg(Nr)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 a5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 b5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 c5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 d5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 e5d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
LOGICAL flagC4
INTEGER i,j,kp1,km2
Real*8 wCFL, rCenter, rUpwind
Real*8 rC4km, rC4kp, rHigh
Real*8 mskM, mskP, maskM2, maskP1
Real*8 deltaTcfl
IF ( k.GT.1 .AND. k.LE.Nr ) THEN
km2=MAX(1,k-2)
kp1=MIN(Nr,k+1)
maskP1 = 1.d0
maskM2 = 1.d0
IF ( k.LE.2 ) maskM2 = 0.d0
IF ( k.GE.Nr) maskP1 = 0.d0
flagC4 = advectionScheme.EQ.ENUM_CENTERED_4TH
& .AND. k.GT.2 .AND. k.LT.Nr
deltaTcfl = deltaTarg(k)
DO j=jMin,jMax
DO i=iMin,iMax
rCenter= 0.5d0 *rTrans(i,j)*recip_rA(i,j,bi,bj)*rkSign
mskM = maskC(i,j,km2,bi,bj)*maskM2
mskP = maskC(i,j,kp1,bi,bj)*maskP1
IF ( flagC4 .AND. mskM*mskP.GT.0.d0 ) THEN
rUpwind= 0.d0
rC4km = oneSixth*rCenter*mskM
rC4kp = oneSixth*rCenter*mskP
ELSEIF ( advectionScheme.EQ.ENUM_DST3 ) THEN
wCFL = deltaTcfl*ABS(rTrans(i,j))
& *recip_rA(i,j,bi,bj)*recip_drC(k)
rHigh = (1.d0 -wCFL*wCFL)*oneSixth
rUpwind= (2.d0*rHigh )*ABS(rCenter)
rC4km = rHigh * (rCenter+ABS(rCenter))*mskM
rC4kp = rHigh * (rCenter-ABS(rCenter))*mskP
ELSE
rUpwind= 2.d0*oneSixth*ABS(rCenter)
rC4km = oneSixth*(rCenter+ABS(rCenter))*mskM
rC4kp = oneSixth*(rCenter-ABS(rCenter))*mskP
ENDIF
a5d(i,j,k) = a5d(i,j,k)
& + rC4km
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b5d(i,j,k) = b5d(i,j,k)
& - ( (rCenter+rUpwind) + rC4km )
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
c5d(i,j,k) = c5d(i,j,k)
& - ( (rCenter-rUpwind) + rC4kp )
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
d5d(i,j,k) = d5d(i,j,k)
& + rC4kp
& *deltaTarg(k)
& *recip_hFacC(i,j,k,bi,bj)*recip_drF(k)
b5d(i,j,k-1) = b5d(i,j,k-1)
& - rC4km
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
c5d(i,j,k-1) = c5d(i,j,k-1)
& + ( (rCenter+rUpwind) + rC4km )
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
d5d(i,j,k-1) = d5d(i,j,k-1)
& + ( (rCenter-rUpwind) + rC4kp )
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
e5d(i,j,k-1) = e5d(i,j,k-1)
& - rC4kp
& *deltaTarg(k-1)
& *recip_hFacC(i,j,k-1,bi,bj)*recip_drF(k-1)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_U3_ADV_X(
I bi,bj,k,
I uTrans,
I tracer,
O uT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Rjm,Rj,Rjp,Rjjm,Rjjp
DO j=1-Oly,sNy+Oly
uT(1-Olx,j)=0.
uT(2-Olx,j)=0.
uT(sNx+Olx,j)=0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+2,sNx+Olx-1
Rjp=(tracer(i+1,j)-tracer(i,j))*maskW(i+1,j,k,bi,bj)
Rj =(tracer(i,j)-tracer(i-1,j))*maskW(i,j,k,bi,bj)
Rjm=(tracer(i-1,j)-tracer(i-2,j))*maskW(i-1,j,k,bi,bj)
Rjjp=Rjp-Rj
Rjjm=Rj-Rjm
uT(i,j) =
& uTrans(i,j)*(
& Tracer(i,j)+Tracer(i-1,j)-oneSixth*( Rjjp+Rjjm )
& )*0.5d0
& +ABS( uTrans(i,j) )*0.5d0*oneSixth*( Rjjp-Rjjm )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_U3_ADV_Y(
I bi,bj,k,
I vTrans,
I tracer,
O vT,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,k
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vT (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 Rjm,Rj,Rjp,Rjjm,Rjjp
DO i=1-Olx,sNx+Olx
vT(i,1-Oly)=0.
vT(i,2-Oly)=0.
vT(i,sNy+Oly)=0.
ENDDO
DO j=1-Oly+2,sNy+Oly-1
DO i=1-Olx,sNx+Olx
Rjp=(tracer(i,j+1)-tracer(i,j))*maskS(i,j+1,k,bi,bj)
Rj =(tracer(i,j)-tracer(i,j-1))*maskS(i,j,k,bi,bj)
Rjm=(tracer(i,j-1)-tracer(i,j-2))*maskS(i,j-1,k,bi,bj)
Rjjp=Rjp-Rj
Rjjm=Rj-Rjm
vT(i,j) =
& vTrans(i,j)*(
& Tracer(i,j)+Tracer(i,j-1)-oneSixth*( Rjjp+Rjjm )
& )*0.5d0
& +ABS( vTrans(i,j) )*0.5d0*oneSixth*( Rjjp-Rjjm )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE GAD_SOM_EXCHANGES( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_CALC_DIFF(
I bi,bj,iMin,iMax,jMin,jMax,kArg,kSize,
U KappaRx,
I tracerIdentity,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
C
INTEGER bi,bj,iMin,iMax,jMin,jMax,kArg,kSize
Real*8 KappaRx(1-Olx:sNx+Olx,1-Oly:sNy+Oly,kSize)
INTEGER tracerIdentity
INTEGER myThid
INTEGER i,j,k
IF ( kArg .EQ. 0 ) THEN
DO k=1,MIN(Nr,kSize)
DO j=jMin,jMax
DO i=iMin,iMax
IF (tracerIdentity .LT. GAD_TR1) THEN
KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,k,bi,bj)
ELSE
KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,k,bi,bj)
ENDIF
ENDDO
ENDDO
ENDDO
ELSE
k = MIN(kArg,kSize)
DO j=jMin,jMax
DO i=iMin,iMax
IF (tracerIdentity .LT. GAD_TR1) THEN
KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,kArg,bi,bj)
ELSE
KappaRx(i,j,k) = KappaRx(i,j,k)+Kwz(i,j,kArg,bi,bj)
ENDIF
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
CStartOfInterface
SUBROUTINE GMREDI_CALC_PSI_B(
I bi, bj, iMin, iMax, jMin, jMax,
I sigmaX, sigmaY, sigmaR,
I ldd97_LrhoW, ldd97_LrhoS,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
C
Real*8 sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 ldd97_LrhoW(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 ldd97_LrhoS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER myThid
CEndOfInterface
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_CALC_TENSOR(
I iMin, iMax, jMin, jMax,
I sigmaX, sigmaY, sigmaR,
I bi, bj, myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
Real*8 GM_timeAve (nSx,nSy)
Real*8 GM_Kwx_T (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 GM_Kwy_T (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 GM_Kwz_T (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_TAVE_VARS/
& GM_timeAve,
& GM_Kwx_T,
& GM_Kwy_T,
& GM_Kwz_T
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
C
INTEGER iMin,iMax,jMin,jMax
Real*8 sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
INTEGER bi, bj
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER i,j,k
Real*8 SlopeX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 SlopeY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDx(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDy(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDr(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 SlopeSqr(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 taperFct(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 Kgm_tmp
Real*8 ldd97_LrhoC(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 ldd97_LrhoW(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 ldd97_LrhoS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 Cspd, LrhoInf, LrhoSup, fCoriLoc
INTEGER kLow_W (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER kLow_S (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 locMixLayer(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 baseSlope (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 hTransLay (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 recipLambda(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER kp1
Real*8 maskp1
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
igmkey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
IF ( GM_taper_scheme.EQ.'ldd97' .OR.
& GM_taper_scheme.EQ.'fm07' ) THEN
Cspd = 2.d0
LrhoInf = 15.D3
LrhoSup = 100.D3
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (fCori(i,j,bi,bj).NE.0.) THEN
ldd97_LrhoC(i,j) = Cspd/ABS(fCori(i,j,bi,bj))
ELSE
ldd97_LrhoC(i,j) = LrhoSup
ENDIF
ldd97_LrhoC(i,j) = MAX(LrhoInf,MIN(ldd97_LrhoC(i,j),LrhoSup))
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
kLow_W(1-Olx,j) = 0
ldd97_LrhoW(1-Olx,j) = LrhoSup
DO i=1-Olx+1,sNx+Olx
kLow_W(i,j) = MIN(kLowC(i-1,j,bi,bj),kLowC(i,j,bi,bj))
fCoriLoc = op5*(fCori(i-1,j,bi,bj)+fCori(i,j,bi,bj))
IF (fCoriLoc.NE.0.) THEN
ldd97_LrhoW(i,j) = Cspd/ABS(fCoriLoc)
ELSE
ldd97_LrhoW(i,j) = LrhoSup
ENDIF
ldd97_LrhoW(i,j) = MAX(LrhoInf,MIN(ldd97_LrhoW(i,j),LrhoSup))
ENDDO
ENDDO
DO i=1-Olx+1,sNx+Olx
kLow_S(i,1-Oly) = 0
ldd97_LrhoS(i,1-Oly) = LrhoSup
ENDDO
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
kLow_S(i,j) = MIN(kLowC(i,j-1,bi,bj),kLowC(i,j,bi,bj))
fCoriLoc = op5*(fCori(i,j-1,bi,bj)+fCori(i,j,bi,bj))
IF (fCoriLoc.NE.0.) THEN
ldd97_LrhoS(i,j) = Cspd/ABS(fCoriLoc)
ELSE
ldd97_LrhoS(i,j) = LrhoSup
ENDIF
ldd97_LrhoS(i,j) = MAX(LrhoInf,MIN(ldd97_LrhoS(i,j),LrhoSup))
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
ldd97_LrhoC(i,j) = 0.d0
ldd97_LrhoW(i,j) = 0.d0
ldd97_LrhoS(i,j) = 0.d0
ENDDO
ENDDO
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hTransLay(i,j) = R_low(i,j,bi,bj)
baseSlope(i,j) = 0.d0
recipLambda(i,j) = 0.d0
locMixLayer(i,j) = 0.d0
ENDDO
ENDDO
IF ( .TRUE. ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
locMixLayer(i,j) = hMixLayer(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
DO k=Nr,2,-1
kkey = (igmkey-1)*Nr + k
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
SlopeX(i,j) = 0.d0
SlopeY(i,j) = 0.d0
dSigmaDx(i,j) = 0.d0
dSigmaDy(i,j) = 0.d0
dSigmaDr(i,j) = 0.d0
SlopeSqr(i,j) = 0.d0
taperFct(i,j) = 0.d0
Kwx(i,j,k,bi,bj) = 0.d0
Kwy(i,j,k,bi,bj) = 0.d0
Kwz(i,j,k,bi,bj) = 0.d0
Kux(i,j,k,bi,bj) = 0.d0
Kvy(i,j,k,bi,bj) = 0.d0
Kuz(i,j,k,bi,bj) = 0.d0
Kvz(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
dSigmaDx(i,j)=op25*( sigmaX(i+1,j,k-1)+sigmaX(i,j,k-1)
& +sigmaX(i+1,j, k )+sigmaX(i,j, k )
& )*maskC(i,j,k,bi,bj)
dSigmaDy(i,j)=op25*( sigmaY(i,j+1,k-1)+sigmaY(i,j,k-1)
& +sigmaY(i,j+1, k )+sigmaY(i,j, k )
& )*maskC(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dSigmaDr(i,j)=sigmaR(i,j,k)
ENDDO
ENDDO
CADJ STORE dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE baseSlope(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE hTransLay(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE recipLambda(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CALL GMREDI_SLOPE_LIMIT(
O SlopeX, SlopeY,
O SlopeSqr, taperFct,
U hTransLay, baseSlope, recipLambda,
U dSigmaDr,
I dSigmaDx, dSigmaDy,
I ldd97_LrhoC, locMixLayer, rF,
I kLowC(1-Olx,1-Oly,bi,bj),
I k, bi, bj, myTime, myIter, myThid )
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
SlopeX(i,j)=SlopeX(i,j)*maskC(i,j,k,bi,bj)
SlopeY(i,j)=SlopeY(i,j)*maskC(i,j,k,bi,bj)
SlopeSqr(i,j)=SlopeSqr(i,j)*maskC(i,j,k,bi,bj)
ENDDO
ENDDO
CADJ STORE SlopeX(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE SlopeY(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE SlopeSqr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kwx(i,j,k,bi,bj)= SlopeX(i,j)*taperFct(i,j)
Kwy(i,j,k,bi,bj)= SlopeY(i,j)*taperFct(i,j)
Kwz(i,j,k,bi,bj)= SlopeSqr(i,j)*taperFct(i,j)
ENDDO
ENDDO
ENDDO
DO k=1,Nr
kkey = (igmkey-1)*Nr + k
CADJ STORE Kwx(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE Kwy(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE Kwz(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kgm_tmp = GM_isopycK
& + GM_skewflx*GM_background_K
Kwx(i,j,k,bi,bj)= Kgm_tmp*Kwx(i,j,k,bi,bj)
Kwy(i,j,k,bi,bj)= Kgm_tmp*Kwy(i,j,k,bi,bj)
Kwz(i,j,k,bi,bj)= ( GM_isopycK
& )*Kwz(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
IF ( .TRUE. ) THEN
DO j=1-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx
locMixLayer(i,j) = ( hMixLayer(i-1,j,bi,bj)
& + hMixLayer( i ,j,bi,bj) )*op5
ENDDO
ENDDO
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hTransLay(i,j) = 0.
baseSlope(i,j) = 0.
recipLambda(i,j)= 0.
ENDDO
DO i=2-Olx,sNx+Olx
hTransLay(i,j) = MAX( R_low(i-1,j,bi,bj), R_low(i,j,bi,bj) )
ENDDO
ENDDO
DO k=Nr,1,-1
kp1 = MIN(Nr,k+1)
maskp1 = 1.d0
IF (k.GE.Nr) maskp1 = 0.d0
kkey = (igmkey-1)*Nr + k
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
dSigmaDx(i,j)=sigmaX(i,j,k)
& *maskW(i,j,k,bi,bj)
dSigmaDy(i,j)=op25*( sigmaY(i-1,j+1,k)+sigmaY(i,j+1,k)
& +sigmaY(i-1, j ,k)+sigmaY(i, j ,k)
& )*maskW(i,j,k,bi,bj)
dSigmaDr(i,j)=op25*( sigmaR(i-1,j, k )+sigmaR(i,j, k )
& +(sigmaR(i-1,j,kp1)+sigmaR(i,j,kp1))*maskp1
& )*maskW(i,j,k,bi,bj)
ENDDO
ENDDO
CADJ STORE SlopeSqr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE locMixLayer(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE baseSlope(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE hTransLay(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE recipLambda(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CALL GMREDI_SLOPE_LIMIT(
O SlopeX, SlopeY,
O SlopeSqr, taperFct,
U hTransLay, baseSlope, recipLambda,
U dSigmaDr,
I dSigmaDx, dSigmaDy,
I ldd97_LrhoW, locMixLayer, rC,
I kLow_W,
I k, bi, bj, myTime, myIter, myThid )
CADJ STORE SlopeSqr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kux(i,j,k,bi,bj) =
& ( GM_isopycK
& )*taperFct(i,j)
ENDDO
ENDDO
CADJ STORE Kux(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kux(i,j,k,bi,bj) = MAX( Kux(i,j,k,bi,bj), GM_Kmin_horiz )
ENDDO
ENDDO
CADJ STORE SlopeX(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
IF ( GM_ExtraDiag ) THEN
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kuz(i,j,k,bi,bj) =
& ( GM_isopycK
& - GM_skewflx*GM_background_K
& )*SlopeX(i,j)*taperFct(i,j)
ENDDO
ENDDO
ENDIF
ENDDO
IF ( .TRUE. ) THEN
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
locMixLayer(i,j) = ( hMixLayer(i,j-1,bi,bj)
& + hMixLayer(i, j ,bi,bj) )*op5
ENDDO
ENDDO
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hTransLay(i,j) = 0.
baseSlope(i,j) = 0.
recipLambda(i,j)= 0.
ENDDO
ENDDO
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hTransLay(i,j) = MAX( R_low(i,j-1,bi,bj), R_low(i,j,bi,bj) )
ENDDO
ENDDO
DO k=Nr,1,-1
kp1 = MIN(Nr,k+1)
maskp1 = 1.d0
IF (k.GE.Nr) maskp1 = 0.d0
kkey = (igmkey-1)*Nr + k
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
dSigmaDx(i,j)=op25*( sigmaX(i, j ,k) +sigmaX(i+1, j ,k)
& +sigmaX(i,j-1,k) +sigmaX(i+1,j-1,k)
& )*maskS(i,j,k,bi,bj)
dSigmaDy(i,j)=sigmaY(i,j,k)
& *maskS(i,j,k,bi,bj)
dSigmaDr(i,j)=op25*( sigmaR(i,j-1, k )+sigmaR(i,j, k )
& +(sigmaR(i,j-1,kp1)+sigmaR(i,j,kp1))*maskp1
& )*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
CADJ STORE dSigmaDx(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDy(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE dSigmaDr(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE baseSlope(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE hTransLay(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE recipLambda(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CALL GMREDI_SLOPE_LIMIT(
O SlopeX, SlopeY,
O SlopeSqr, taperFct,
U hTransLay, baseSlope, recipLambda,
U dSigmaDr,
I dSigmaDx, dSigmaDy,
I ldd97_LrhoS, locMixLayer, rC,
I kLow_S,
I k, bi, bj, myTime, myIter, myThid )
CADJ STORE taperfct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kvy(i,j,k,bi,bj) =
& ( GM_isopycK
& )*taperFct(i,j)
ENDDO
ENDDO
CADJ STORE Kvy(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kvy(i,j,k,bi,bj) = MAX( Kvy(i,j,k,bi,bj), GM_Kmin_horiz )
ENDDO
ENDDO
CADJ STORE SlopeY(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE taperFct(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
IF ( GM_ExtraDiag ) THEN
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kvz(i,j,k,bi,bj) =
& ( GM_isopycK
& - GM_skewflx*GM_background_K
& )*SlopeY(i,j)*taperFct(i,j)
ENDDO
ENDDO
ENDIF
ENDDO
IF ( taveFreq.GT.0. ) THEN
CALL TIMEAVE_CUMULATE( GM_Kwx_T, Kwx, Nr,
& deltaTclock, bi, bj, myThid )
CALL TIMEAVE_CUMULATE( GM_Kwy_T, Kwy, Nr,
& deltaTclock, bi, bj, myThid )
CALL TIMEAVE_CUMULATE( GM_Kwz_T, Kwz, Nr,
& deltaTclock, bi, bj, myThid )
GM_timeAve(bi,bj) = GM_timeAve(bi,bj)+deltaTclock
ENDIF
RETURN
END
SUBROUTINE GMREDI_CALC_TENSOR_DUMMY(
I iMin, iMax, jMin, jMax,
I sigmaX, sigmaY, sigmaR,
I bi, bj, myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
C
Real*8 sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
INTEGER iMin,iMax,jMin,jMax
INTEGER bi, bj
Real*8 myTime
INTEGER myIter
INTEGER myThid
CEndOfInterface
INTEGER i, j, k
DO k=1,Nr
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
Kwx(i,j,k,bi,bj) = 0.0
Kwy(i,j,k,bi,bj) = 0.0
Kwz(i,j,k,bi,bj) = 0.0
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_CALC_UVFLOW(
U uFld, vFld, uTrans, vTrans,
I k, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
INTEGER k, bi, bj, myThid
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_CALC_WFLOW(
U wFld, rTrans,
I k, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER k, bi, bj, myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_INIT( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
Real*8 GM_timeAve (nSx,nSy)
Real*8 GM_Kwx_T (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 GM_Kwy_T (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 GM_Kwz_T (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_TAVE_VARS/
& GM_timeAve,
& GM_Kwx_T,
& GM_Kwy_T,
& GM_Kwz_T
INTEGER myThid
INTEGER i,j,k,bi,bj
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j=1-Oly,sNy+OLy
DO i=1-Olx,sNx+Olx
Kwx(i,j,k,bi,bj) = 0.d0
Kwy(i,j,k,bi,bj) = 0.d0
Kwz(i,j,k,bi,bj) = 0.d0
Kuz(i,j,k,bi,bj) = 0.d0
Kvz(i,j,k,bi,bj) = 0.d0
Kux(i,j,k,bi,bj) = 0.d0
Kvy(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
CALL TIMEAVE_RESET(GM_Kwx_T,Nr, bi,bj,myThid)
CALL TIMEAVE_RESET(GM_Kwy_T,Nr, bi,bj,myThid)
CALL TIMEAVE_RESET(GM_Kwz_T,Nr, bi,bj,myThid)
GM_timeAve(bi,bj) = 0.d0
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
subroutine GMREDI_RTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,K,
I Tracer,tracerIdentity,
U df,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER iMin,iMax,jMin,jMax,bi,bj,k
Real*8 Tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER tracerIdentity
Real*8 df (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I, J
Real*8 dTdx (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dTdy (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
act0 = tracerIdentity - 1
max0 = maxpass
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
igadkey = (act0 + 1)
& + act1*max0
& + act2*max0*max1
& + act3*max0*max1*max2
& + act4*max0*max1*max2*max3
kkey = (igadkey-1)*Nr + k
if (tracerIdentity.GT.maxpass) then
print *, 'ph-pass gmredi_rtrans ', maxpass, tracerIdentity
STOP 'maxpass seems smaller than tracerIdentity'
endif
IF (useGMRedi .AND. K.GT.1) THEN
DO j=jMin,jMax
DO i=iMin,iMax
dTdx(i,j) = op5*(
& +op5*(maskW(i+1,j,k,bi,bj)
& *recip_dxC(i+1,j,bi,bj)*
& (Tracer(i+1,j,k,bi,bj)-Tracer(i,j,k,bi,bj))
& +maskW(i,j,k,bi,bj)
& *recip_dxC(i,j,bi,bj)*
& (Tracer(i,j,k,bi,bj)-Tracer(i-1,j,k,bi,bj)))
& +op5*(maskW(i+1,j,k-1,bi,bj)
& *recip_dxC(i+1,j,bi,bj)*
& (Tracer(i+1,j,k-1,bi,bj)-Tracer(i,j,k-1,bi,bj))
& +maskW(i,j,k-1,bi,bj)
& *recip_dxC(i,j,bi,bj)*
& (Tracer(i,j,k-1,bi,bj)-Tracer(i-1,j,k-1,bi,bj)))
& )
dTdy(i,j) = op5*(
& +op5*(maskS(i,j,k,bi,bj)
& *recip_dyC(i,j,bi,bj)*
& (Tracer(i,j,k,bi,bj)-Tracer(i,j-1,k,bi,bj))
& +maskS(i,j+1,k,bi,bj)
& *recip_dyC(i,j+1,bi,bj)*
& (Tracer(i,j+1,k,bi,bj)-Tracer(i,j,k,bi,bj)))
& +op5*(maskS(i,j,k-1,bi,bj)
& *recip_dyC(i,j,bi,bj)*
& (Tracer(i,j,k-1,bi,bj)-Tracer(i,j-1,k-1,bi,bj))
& +maskS(i,j+1,k-1,bi,bj)
& *recip_dyC(i,j+1,bi,bj)*
& (Tracer(i,j+1,k-1,bi,bj)-Tracer(i,j,k-1,bi,bj)))
& )
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
IF ( tracerIdentity .LT. GAD_TR1 ) THEN
df(i,j) = df(i,j)
& - rA(i,j,bi,bj)
& *( Kwx(i,j,k,bi,bj)*dTdx(i,j)+Kwy(i,j,k,bi,bj)*dTdy(i,j) )
ELSE
df(i,j) = df(i,j)
& - rA(i,j,bi,bj)
& *( Kwx(i,j,k,bi,bj)*dTdx(i,j)+Kwy(i,j,k,bi,bj)*dTdy(i,j) )
ENDIF
ENDDO
ENDDO
c
c
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_SLOPE_LIMIT(
O SlopeX, SlopeY,
O SlopeSqr, taperFct,
U hTransLay, baseSlope, recipLambda,
U dSigmaDr,
I dSigmaDx, dSigmaDy,
I Lrho, hMixLay, depthZ, kLow,
I k, bi, bj, myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
Real*8 SlopeX (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 SlopeY (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 SlopeSqr (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 taperFct (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 hTransLay (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 baseSlope (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 recipLambda(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDr (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDx (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDy (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 Lrho (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 hMixLay (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 depthZ(*)
INTEGER kLow (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER k, bi,bj
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 dSigmMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 SlopeMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dRdSigmaLtd(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 tmpFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 locVar(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 f1,Smod,f2,Rnondim
Real*8 maxSlopeSqr
Real*8 fpi
PARAMETER( fpi = PI )
INTEGER i,j
Real*8 dTransLay, rLambMin, DoverLamb
Real*8 taperFctLoc, taperFctHat
Real*8 minTransLay
Real*8 GM_bigSlope
GM_bigSlope = 1.D+02
CADJ PASSIVE depthz
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
ikey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
dSigmMod(i,j) = 0.d0
tmpFld(i,j) = 0.d0
ENDDO
ENDDO
IF (GM_taper_scheme.EQ.'orig' .OR.
& GM_taper_scheme.EQ.'clipping') THEN
STOP 'Need to compile without "#define GM_EXCLUDE_CLIPPING"'
ELSEIF (GM_taper_scheme.EQ.'fm07' ) THEN
STOP 'Need to compile without "#define GM_EXCLUDE_FM07_TAP"'
ELSE IF (GM_taper_scheme.EQ.'ac02') THEN
STOP 'Need to compile without "#define GM_EXCLUDE_AC02_TAP"'
ELSE
cnostore CADJ STORE dSigmaDr(:,:) = comlev1_bibj, key=ikey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
IF ( dSigmaDr(i,j) .NE. 0. ) THEN
IF (dSigmaDr(i,j).GE.(-GM_Small_Number))
& dSigmaDr(i,j) = -GM_Small_Number
ENDIF
ENDDO
ENDDO
cnostore CADJ STORE dSigmaDx(:,:) = comlev1_bibj, key=ikey, byte=isbyte
cnostore CADJ STORE dSigmaDy(:,:) = comlev1_bibj, key=ikey, byte=isbyte
cnostore CADJ STORE dSigmaDr(:,:) = comlev1_bibj, key=ikey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
IF ( dSigmaDr(i,j) .EQ. 0. ) THEN
IF ( dSigmaDx(i,j) .NE. 0. ) THEN
SlopeX(i,j) = SIGN( GM_bigSlope, dSigmaDx(i,j) )
ELSE
SlopeX(i,j) = 0.d0
ENDIF
IF ( dSigmaDy(i,j) .NE. 0. ) THEN
SlopeY(i,j) = SIGN( GM_bigSlope, dSigmaDy(i,j) )
ELSE
SlopeY(i,j) = 0.d0
ENDIF
ELSE
dRdSigmaLtd(i,j) = 1.d0 / dSigmaDr(i,j)
SlopeX(i,j)=-dSigmaDx(i,j)*dRdSigmaLtd(i,j)
SlopeY(i,j)=-dSigmaDy(i,j)*dRdSigmaLtd(i,j)
ENDIF
ENDDO
ENDDO
cnostore CADJ STORE slopeX(:,:) = comlev1_bibj, key=ikey, byte=isbyte
cnostore CADJ STORE slopeY(:,:) = comlev1_bibj, key=ikey, byte=isbyte
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
SlopeSqr(i,j) = SlopeX(i,j)*SlopeX(i,j)
& +SlopeY(i,j)*SlopeY(i,j)
taperFct(i,j) = 1.d0
IF ( SlopeSqr(i,j) .GT. GM_slopeSqCutoff ) THEN
slopeSqr(i,j) = GM_slopeSqCutoff
taperFct(i,j) = 0.d0
ENDIF
ENDDO
ENDDO
IF (GM_taper_scheme.EQ.'linear') THEN
maxSlopeSqr = GM_maxSlope*GM_maxSlope
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
IF ( SlopeSqr(i,j) .EQ. 0. ) THEN
taperFct(i,j) = 1.d0
ELSE IF ( SlopeSqr(i,j) .GT. maxSlopeSqr .AND.
& SlopeSqr(i,j) .LT. GM_slopeSqCutoff ) THEN
taperFct(i,j) = SQRT(maxSlopeSqr / SlopeSqr(i,j))
slopeSqr(i,j) = MIN( slopeSqr(i,j),GM_bigSlope*GM_bigSlope )
ENDIF
ENDDO
ENDDO
ELSEIF (GM_taper_scheme.EQ.'gkw91') THEN
maxSlopeSqr = GM_maxSlope*GM_maxSlope
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
IF ( SlopeSqr(i,j) .EQ. 0. ) THEN
taperFct(i,j) = 1.d0
ELSE IF ( SlopeSqr(i,j) .GT. maxSlopeSqr .AND.
& SlopeSqr(i,j) .LT. GM_slopeSqCutoff ) THEN
taperFct(i,j) = maxSlopeSqr/SlopeSqr(i,j)
ENDIF
ENDDO
ENDDO
ELSEIF (GM_taper_scheme.EQ.'dm95') THEN
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
IF ( SlopeSqr(i,j) .EQ. 0. ) THEN
taperFct(i,j) = 1.d0
ELSE IF ( SlopeSqr(i,j) .LT. GM_slopeSqCutoff ) THEN
Smod=SQRT(SlopeSqr(i,j))
taperFct(i,j)=op5*( 1.d0 + tanh( (GM_Scrit-Smod)/GM_Sd ))
ENDIF
ENDDO
ENDDO
ELSEIF (GM_taper_scheme.EQ.'ldd97') THEN
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
IF (SlopeSqr(i,j) .EQ. 0.) THEN
taperFct(i,j) = 1.d0
ELSEIF ( SlopeSqr(i,j) .LT. GM_slopeSqCutoff ) THEN
Smod=SQRT(SlopeSqr(i,j))
f1=op5*( 1.d0 + tanh( (GM_Scrit-Smod)/GM_Sd ))
Rnondim= -depthZ(k)/(Lrho(i,j)*Smod)
IF ( Rnondim.GE.1.d0 ) THEN
f2 = 1.d0
ELSE
f2 = op5*( 1.d0 + SIN( fpi*(Rnondim-op5) ))
ENDIF
taperFct(i,j)=f1*f2
ENDIF
ENDDO
ENDDO
ELSEIF (GM_taper_scheme.NE.' ') THEN
STOP 'GMREDI_SLOPE_LIMIT: Bad GM_taper_scheme'
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
CStartOfInterface
SUBROUTINE GMREDI_SLOPE_PSI(
O taperX, taperY,
U SlopeX, SlopeY,
U dSigmaDrW,dSigmaDrS,
I LrhoW, LrhoS, depthZ, K,
I bi,bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
C
Real*8 taperX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 taperY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 SlopeX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 SlopeY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDrW(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dSigmaDrS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 LrhoW(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 LrhoS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 depthZ
INTEGER K,bi,bj,myThid
CEndOfInterface
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_XTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,K,
I xA,Tracer,tracerIdentity,
U df,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER iMin,iMax,jMin,jMax,bi,bj,k
Real*8 xA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 Tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer tracerIdentity
Real*8 df (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I, J
INTEGER kp1
INTEGER km1
Real*8 dTdz (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
act0 = tracerIdentity - 1
max0 = maxpass
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
igadkey = (act0 + 1)
& + act1*max0
& + act2*max0*max1
& + act3*max0*max1*max2
& + act4*max0*max1*max2*max3
kkey = (igadkey-1)*Nr + k
if (tracerIdentity.GT.maxpass) then
print *, 'ph-pass gmredi_xtrans ', maxpass, tracerIdentity
STOP 'maxpass seems smaller than tracerIdentity'
endif
IF (useGMRedi) THEN
CADJ STORE Kux(:,:,k,bi,bj) =
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte
CADJ STORE Kuz(:,:,k,bi,bj) =
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte
DO j=jMin,jMax
DO i=iMin,iMax
df(i,j) = df(i,j)
& -xA(i,j)
& *Kux(i,j,k,bi,bj)
& *recip_dxC(i,j,bi,bj)
& *(Tracer(i,j,k,bi,bj)-Tracer(i-1,j,k,bi,bj))
ENDDO
ENDDO
IF (GM_ExtraDiag) THEN
km1 = MAX(k-1,1)
kp1 = MIN(k+1,Nr)
DO j=jMin,jMax
DO i=iMin,iMax
dTdz(i,j) = op5*(
& +op5*recip_drC(k)*
& ( maskC(i-1,j,k,bi,bj)*
& (Tracer(i-1,j,km1,bi,bj)-Tracer(i-1,j,k,bi,bj))
& +maskC( i ,j,k,bi,bj)*
& (Tracer( i ,j,km1,bi,bj)-Tracer( i ,j,k,bi,bj))
& )
& +op5*recip_drC(kp1)*
& ( maskC(i-1,j,kp1,bi,bj)*
& (Tracer(i-1,j,k,bi,bj)-Tracer(i-1,j,kp1,bi,bj))
& +maskC( i ,j,kp1,bi,bj)*
& (Tracer( i ,j,k,bi,bj)-Tracer( i ,j,kp1,bi,bj))
& ) )
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
df(i,j) = df(i,j) - xA(i,j)*Kuz(i,j,k,bi,bj)*dTdz(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GMREDI_YTRANSPORT(
I iMin,iMax,jMin,jMax,bi,bj,K,
I yA,Tracer,tracerIdentity,
U df,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER iMin,iMax,jMin,jMax,bi,bj,k
Real*8 yA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 Tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer tracerIdentity
Real*8 df (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I, J
INTEGER kp1
INTEGER km1
Real*8 dTdz(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
act0 = tracerIdentity - 1
max0 = maxpass
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
igadkey = (act0 + 1)
& + act1*max0
& + act2*max0*max1
& + act3*max0*max1*max2
& + act4*max0*max1*max2*max3
kkey = (igadkey-1)*Nr + k
if (tracerIdentity.GT.maxpass) then
print *, 'ph-pass gmredi_ytrans ', maxpass, tracerIdentity
STOP 'maxpass seems smaller than tracerIdentity'
endif
IF (useGMRedi) THEN
CADJ STORE Kvy(:,:,k,bi,bj) =
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte
CADJ STORE Kvz(:,:,k,bi,bj) =
CADJ & comlev1_gmredi_k_gad, key=kkey, byte=isbyte
DO j=jMin,jMax
DO i=iMin,iMax
df(i,j) = df(i,j)
& -yA(i,j)
& *Kvy(i,j,k,bi,bj)
& *recip_dyC(i,j,bi,bj)
& *(Tracer(i,j,k,bi,bj)-Tracer(i,j-1,k,bi,bj))
ENDDO
ENDDO
IF (GM_ExtraDiag) THEN
km1 = MAX(k-1,1)
kp1 = MIN(k+1,Nr)
DO j=jMin,jMax
DO i=iMin,iMax
dTdz(i,j) = op5*(
& +op5*recip_drC(k)*
& ( maskC(i,j-1,k,bi,bj)*
& (Tracer(i,j-1,km1,bi,bj)-Tracer(i,j-1,k,bi,bj))
& +maskC(i, j ,k,bi,bj)*
& (Tracer(i, j ,km1,bi,bj)-Tracer(i, j ,k,bi,bj))
& )
& +op5*recip_drC(kp1)*
& ( maskC(i,j-1,kp1,bi,bj)*
& (Tracer(i,j-1,k,bi,bj)-Tracer(i,j-1,kp1,bi,bj))
& +maskC(i, j ,kp1,bi,bj)*
& (Tracer(i, j ,k,bi,bj)-Tracer(i, j ,kp1,bi,bj))
& ) )
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
df(i,j) = df(i,j) - yA(i,j)*Kvz(i,j,k,bi,bj)*dTdz(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_ABSVORT3(
I bi,bj,k,
I vort3,
O omega3,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 omega3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
Real*8 nonLinFac,useCoriolisFac
IF (momAdvection) THEN
nonLinFac=1.
ELSE
nonLinFac=0.
ENDIF
IF (useCoriolis) THEN
useCoriolisFac=1.
ELSE
useCoriolisFac=0.
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
omega3(I,J)=
& fCoriG(i,j,bi,bj)*useCoriolisFac
& +vort3(i,j)*nonLinFac
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_HDIV(
I bi,bj,k, hDivScheme,
I uFld, vFld,
O hDiv,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k,hDivScheme
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
IF (hDivScheme.EQ.1) THEN
DO J=1-Oly,sNy+Oly-1
DO I=1-Olx,sNx+Olx-1
hDiv(I,J)=(
& uFld(i+1, j )*dyg(i+1, j ,bi,bj)
& -uFld( i , j )*dyg( i , j ,bi,bj)
& +vFld( i ,j+1)*dxg( i ,j+1,bi,bj)
& -vFld( i , j )*dxg( i , j ,bi,bj)
& )*recip_rA(I,J,bi,bj)
ENDDO
ENDDO
ELSEIF (hDivScheme.EQ.2) THEN
DO J=1-Oly,sNy+Oly-1
DO I=1-Olx,sNx+Olx-1
hDiv(I,J)=
& ( ( uFld(i+1, j )*dyg(i+1, j ,bi,bj)*hFacW(i+1, j ,K,bi,bj)
& -uFld( i , j )*dyg( i , j ,bi,bj)*hFacW( i , j ,K,bi,bj) )
& +( vFld( i ,j+1)*dxg( i ,j+1,bi,bj)*hFacS( i ,j+1,K,bi,bj)
& -vFld( i , j )*dxg( i , j ,bi,bj)*hFacS( i , j ,K,bi,bj) )
& )*recip_rA(I,J,bi,bj)
& *recip_hFacC(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
STOP 'S/R MOM_CALC_HDIV: We should never reach this point!'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_HFACZ(
I bi,bj,k,
O hFacZ,r_hFacZ,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER bi,bj,k
INTEGER myThid
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
Real*8 hFacZOpen
INTEGER hZoption
LOGICAL northWestCorner, northEastCorner,
& southWestCorner, southEastCorner
INTEGER myFace
PARAMETER ( hZoption = 0 )
DO i=1-Olx,sNx+Olx
hFacZ(i,1-Oly)=0.
ENDDO
DO j=2-Oly,sNy+Oly
hFacZ(1-Olx,j)=0.
ENDDO
IF ( hZoption.EQ.2 ) THEN
DO j=2-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx
hFacZOpen=
& ( hFacW(i, j ,k,bi,bj)
& +hFacW(i,j-1,k,bi,bj) )
& + ( hFacS( i ,j,k,bi,bj)
& +hFacS(i-1,j,k,bi,bj) )
hFacZ(i,j) = 0.25d0 * hFacZOpen
ENDDO
ENDDO
ELSEIF ( hZoption.EQ.1 ) THEN
DO j=2-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx
hFacZOpen=MIN(
& hFacW(i, j ,k,bi,bj)
& + hFacW(i,j-1,k,bi,bj)
& , hFacS( i ,j,k,bi,bj)
& + hFacS(i-1,j,k,bi,bj)
& )
hFacZ(i,j) = 0.5d0 * hFacZOpen
ENDDO
ENDDO
ELSE
DO j=2-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx
hFacZOpen=MIN(hFacW(i,j,k,bi,bj),
& hFacW(i,j-1,k,bi,bj))
hFacZOpen=MIN(hFacS(i,j,k,bi,bj),hFacZOpen)
hFacZOpen=MIN(hFacS(i-1,j,k,bi,bj),hFacZOpen)
hFacZ(i,j)=hFacZOpen
ENDDO
ENDDO
ENDIF
IF ( useCubedSphereExchange .AND. hZoption.GE.1 ) THEN
myFace = bi
southWestCorner = .TRUE.
southEastCorner = .TRUE.
northWestCorner = .TRUE.
northEastCorner = .TRUE.
IF ( southWestCorner ) THEN
i=1
j=1
IF ( hZoption.EQ.1 ) THEN
hFacZOpen=MIN(hFacW(i,j,k,bi,bj),
& hFacW(i,j-1,k,bi,bj))
hFacZOpen=MIN(hFacS(i,j,k,bi,bj),hFacZOpen)
hFacZ(i,j)=hFacZOpen
ELSE
IF ( MOD(myFace,2).EQ.1 ) THEN
hFacZOpen=
& ( hFacW(i,j-1,k,bi,bj)
& +hFacS( i ,j,k,bi,bj) )
& + hFacW(i, j ,k,bi,bj)
ELSE
hFacZOpen=
& ( hFacW(i, j ,k,bi,bj)
& +hFacW(i,j-1,k,bi,bj) )
& + hFacS( i ,j,k,bi,bj)
ENDIF
hFacZ(i,j) = hFacZOpen / 3.d0
ENDIF
ENDIF
IF ( southEastCorner ) THEN
I=sNx+1
J=1
IF ( hZoption.EQ.1 ) THEN
hFacZOpen=MIN(hFacW(i,j,k,bi,bj),
& hFacW(i,j-1,k,bi,bj))
hFacZOpen=MIN(hFacS(i-1,j,k,bi,bj),hFacZOpen)
hFacZ(i,j)=hFacZOpen
ELSE
IF ( myFace.EQ.4 ) THEN
hFacZOpen=
& ( hFacS(i-1,j,k,bi,bj)
& +hFacW(i,j-1,k,bi,bj) )
& + hFacW(i, j ,k,bi,bj)
ELSEIF ( myFace.EQ.6 ) THEN
hFacZOpen=
& ( hFacW(i,j-1,k,bi,bj)
& +hFacW(i, j ,k,bi,bj) )
& + hFacS(i-1,j,k,bi,bj)
ELSE
hFacZOpen=
& ( hFacW(i, j ,k,bi,bj)
& +hFacS(i-1,j,k,bi,bj) )
& + hFacW(i,j-1,k,bi,bj)
ENDIF
hFacZ(i,j) = hFacZOpen / 3.d0
ENDIF
ENDIF
IF ( northWestCorner ) THEN
i=1
j=sNy+1
IF ( hZoption.EQ.1 ) THEN
hFacZOpen=MIN(hFacW(i,j,k,bi,bj),
& hFacW(i,j-1,k,bi,bj))
hFacZOpen=MIN(hFacS(i,j,k,bi,bj),hFacZOpen)
hFacZ(i,j)=hFacZOpen
ELSE
IF ( myFace.EQ.1 ) THEN
hFacZOpen=
& ( hFacS( i ,j,k,bi,bj)
& +hFacW(i, j ,k,bi,bj) )
& + hFacW(i,j-1,k,bi,bj)
ELSEIF ( myFace.EQ.5 ) THEN
hFacZOpen=
& ( hFacW(i, j ,k,bi,bj)
& +hFacW(i,j-1,k,bi,bj) )
& + hFacS( i ,j,k,bi,bj)
ELSE
hFacZOpen=
& ( hFacW(i,j-1,k,bi,bj)
& +hFacS( i ,j,k,bi,bj) )
& + hFacW(i, j ,k,bi,bj)
ENDIF
hFacZ(i,j) = hFacZOpen / 3.d0
ENDIF
ENDIF
IF ( northEastCorner ) THEN
i=sNx+1
j=sNy+1
IF ( hZoption.EQ.1 ) THEN
hFacZOpen=MIN(hFacW(i,j,k,bi,bj),
& hFacW(i,j-1,k,bi,bj))
hFacZOpen=MIN(hFacS(i-1,j,k,bi,bj),hFacZOpen)
hFacZ(i,j)=hFacZOpen
ELSE
IF ( MOD(myFace,2).EQ.1 ) THEN
hFacZOpen=
& ( hFacW(i,j-1,k,bi,bj)
& +hFacW(i, j ,k,bi,bj) )
& + hFacS(i-1,j,k,bi,bj)
ELSE
hFacZOpen=
& ( hFacW(i, j ,k,bi,bj)
& +hFacS(i-1,j,k,bi,bj) )
& + hFacW(i,j-1,k,bi,bj)
ENDIF
hFacZ(i,j) = hFacZOpen / 3.d0
ENDIF
ENDIF
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (hFacZ(i,j).EQ.0.) THEN
r_hFacZ(i,j) = 0.
ELSE
r_hFacZ(i,j) = 1.d0/hFacZ(i,j)
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_KE(
I bi,bj,k,KEscheme,
I uFld, vFld,
O KE,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER KEscheme
INTEGER myThid
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
C
IF (KEscheme.EQ.-1) THEN
DO J=1-OLy,sNy+OLy-1
DO I=1-OLx,sNx+OLx-1
KE(i,j) = 0.125*(
& ( uFld(i,j)+uFld(i+1, j ) )**2
& +( vFld(i,j)+vFld( i ,j+1) )**2 )
ENDDO
ENDDO
ELSEIF (KEscheme.EQ.0) THEN
C
DO J=1-OLy,sNy+OLy-1
DO I=1-OLx,sNx+OLx-1
KE(i,j) = 0.25*(
& ( uFld( i , j )*uFld( i , j )
& +uFld(i+1, j )*uFld(i+1, j ) )
& + ( vFld( i , j )*vFld( i , j )
& +vFld( i ,j+1)*vFld( i ,j+1) )
& )
ENDDO
ENDDO
ELSEIF (KEscheme.EQ.1) THEN
DO J=1-OLy,sNy+OLy-1
DO I=1-OLx,sNx+OLx-1
KE(i,j) = 0.25*(
& ( uFld(i, j )*uFld(i, j )*rAw(i ,j, bi,bj)
& +uFld(i+1,j)*uFld(i+1,j)*rAw(i+1,j,bi,bj) )
& + ( vFld(i, j )*vFld(i, j )*rAs(i ,j, bi,bj)
& +vFld(i,j+1)*vFld(i,j+1)*rAs(i,j+1,bi,bj) )
& )*recip_rA(i,j,bi,bj)
ENDDO
ENDDO
ELSEIF (KEscheme.EQ.2) THEN
DO J=1-OLy,sNy+OLy-1
DO I=1-OLx,sNx+OLx-1
KE(i,j) = 0.25*(
& ( uFld( i , j )*uFld( i , j )*hFacW(i,j,k,bi,bj)
& +uFld(i+1, j )*uFld(i+1, j )*hFacW(i+1,j,k,bi,bj) )
& + ( vFld( i , j )*vFld( i , j )*hFacS(i,j,k,bi,bj)
& +vFld( i ,j+1)*vFld( i ,j+1)*hFacS(i,j+1,k,bi,bj) )
& )*recip_hFacC(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF (KEscheme.EQ.3) THEN
DO J=1-OLy,sNy+OLy-1
DO I=1-OLx,sNx+OLx-1
KE(i,j) = 0.25*(
& (
& uFld(i, j )*uFld(i, j )
& *hFacW(i ,j, k,bi,bj)*rAw(i ,j, bi,bj)
& +uFld(i+1,j)*uFld(i+1,j)
& *hFacW(i+1,j,k,bi,bj)*rAw(i+1,j,bi,bj)
& )
& + (
& vFld(i, j )*vFld(i, j )
& *hFacS(i, j, k,bi,bj)*rAs(i ,j, bi,bj)
& +vFld(i,j+1)*vFld(i,j+1)
& *hFacS(i,j+1,k,bi,bj)*rAs(i,j+1,bi,bj)
& ) )*recip_hFacC(i,j,k,bi,bj)
& * recip_rA(i,j,bi,bj)
ENDDO
ENDDO
ELSE
STOP 'S/R MOM_CALC_KE: We should never reach this point!'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_RELVORT3(
I bi,bj,k,
I uFld, vFld, hFacZ,
O vort3,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
LOGICAL northWestCorner, northEastCorner,
& southWestCorner, southEastCorner
INTEGER myFace
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
vort3(I,J) = 0.d0
ENDDO
ENDDO
DO J=2-Oly,sNy+Oly
DO I=2-Olx,sNx+Olx
vort3(I,J)=
& recip_rAz(I,J,bi,bj)*(
& ( vFld(I,J)*dyC(I,J,bi,bj)
& -vFld(I-1,J)*dyC(I-1,J,bi,bj) )
& -( uFld(I,J)*dxC(I,J,bi,bj)
& -uFld(I,J-1)*dxC(I,J-1,bi,bj) )
& )
ENDDO
ENDDO
IF (useCubedSphereExchange) THEN
myFace = bi
southWestCorner = .TRUE.
southEastCorner = .TRUE.
northWestCorner = .TRUE.
northEastCorner = .TRUE.
IF ( southWestCorner ) THEN
I=1
J=1
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& ( vFld(I,J)*dyC(I,J,bi,bj)
& -uFld(I,J)*dxC(I,J,bi,bj) )
& + uFld(I,J-1)*dxC(I,J-1,bi,bj)
& )
ENDIF
IF ( southEastCorner ) THEN
I=sNx+1
J=1
IF ( myFace.EQ.2 ) THEN
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (-uFld(I,J)*dxC(I,J,bi,bj)
& -vFld(I-1,J)*dyC(I-1,J,bi,bj) )
& + uFld(I,J-1)*dxC(I,J-1,bi,bj)
& )
ELSEIF ( myFace.EQ.4 ) THEN
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (-vFld(I-1,J)*dyC(I-1,J,bi,bj)
& +uFld(I,J-1)*dxC(I,J-1,bi,bj) )
& - uFld(I,J)*dxC(I,J,bi,bj)
& )
ELSE
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (+uFld(I,J-1)*dxC(I,J-1,bi,bj)
& -uFld(I,J)*dxC(I,J,bi,bj) )
& - vFld(I-1,J)*dyC(I-1,J,bi,bj)
& )
ENDIF
ENDIF
IF ( northWestCorner ) THEN
I=1
J=sNy+1
IF ( myFace.EQ.1 ) THEN
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (+uFld(I,J-1)*dxC(I,J-1,bi,bj)
& +vFld(I,J)*dyC(I,J,bi,bj) )
& -uFld(I,J)*dxC(I,J,bi,bj)
& )
ELSEIF ( myFace.EQ.3 ) THEN
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (-uFld(I,J)*dxC(I,J,bi,bj)
& +uFld(I,J-1)*dxC(I,J-1,bi,bj) )
& + vFld(I,J)*dyC(I,J,bi,bj)
& )
ELSE
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (+vFld(I,J)*dyC(I,J,bi,bj)
& -uFld(I,J)*dxC(I,J,bi,bj) )
& + uFld(I,J-1)*dxC(I,J-1,bi,bj)
& )
ENDIF
ENDIF
IF ( northEastCorner ) THEN
I=sNx+1
J=sNy+1
IF ( MOD(myFace,2).EQ.1 ) THEN
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (-uFld(I,J)*dxC(I,J,bi,bj)
& -vFld(I-1,J)*dyC(I-1,J,bi,bj) )
& + uFld(I,J-1)*dxC(I,J-1,bi,bj)
& )
ELSE
vort3(I,J)=
& +recip_rAz(I,J,bi,bj)*(
& (+uFld(I,J-1)*dxC(I,J-1,bi,bj)
& -uFld(I,J)*dxC(I,J,bi,bj) )
& - vFld(I-1,J)*dyC(I-1,J,bi,bj)
& )
ENDIF
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_STRAIN(
I bi,bj,k,
I uFld, vFld, hFacZ,
O strain,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO J=2-Oly,sNy+Oly
DO I=2-Olx,sNx+Olx
strain(I,J)=
& ( dyc( i , j ,bi,bj)*vFld( i , j )
& -dyc(i-1, j ,bi,bj)*vFld(i-1, j )
& +dxc( i , j ,bi,bj)*uFld( i , j )
& -dxc( i ,j-1,bi,bj)*uFld( i ,j-1) )*recip_rAz(i,j,bi,bj)
ENDDO
ENDDO
IF (useCubedSphereExchange) THEN
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_TENSION(
I bi,bj,k,
I uFld, vFld,
O tension,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
tension(i,j)=
& ( dyg(i+1, j ,bi,bj)*uFld(i+1, j )
& -dyg( i , j ,bi,bj)*uFld( i , j )
& -dxg( i ,j+1,bi,bj)*vFld( i ,j+1)
& +dxg( i , j ,bi,bj)*vFld( i , j ) )*recip_rA(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_VISC(
I bi,bj,k,
O viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
O harmonic,biharmonic,useVariableViscosity,
I hDiv,vort3,tension,strain,KE,hFacZ,
I myThid)
IMPLICIT NONE
C
C
C
C
C
C
C
C
C
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
COMMON /MOM_VISC_L/ L2_D, L2_Z,
& L3_D, L3_Z,
& L4rdt_D, L4rdt_Z,
& recip_dt
Real*8 L2_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 L2_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 L3_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 L3_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 L4rdt_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 L4rdt_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dt
INTEGER bi,bj,k
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
LOGICAL harmonic,biharmonic,useVariableViscosity
INTEGER I,J
INTEGER lockey_1, lockey_2
Real*8 smag2fac, smag4fac
Real*8 leith2fac, leith4fac
Real*8 leithD2fac, leithD4fac
Real*8 viscAhRe_max, viscA4Re_max
Real*8 Alin,grdVrt,grdDiv, keZpt
Real*8 L2,L3,L5,L2rdt,L4rdt
Real*8 Uscl,U4scl
Real*8 divDx(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 divDy(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vrtDx(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vrtDy(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_ZMax(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_DMax(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_ZMax(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_DMax(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_ZMin(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_DMin(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_ZMin(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_DMin(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_ZLth(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_DLth(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_ZLth(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_DLth(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_ZLthD(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_DLthD(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_ZLthD(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_DLthD(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_ZSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_DSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_ZSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_DSmg(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
LOGICAL calcLeith, calcSmag
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
ikey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
lockey_1 = (ikey-1)*Nr + k
useVariableViscosity=
& (viscAhGrid.NE.0.)
& .OR.(viscA4Grid.NE.0.)
& .OR.(viscC2leith.NE.0.)
& .OR.(viscC2leithD.NE.0.)
& .OR.(viscC4leith.NE.0.)
& .OR.(viscC4leithD.NE.0.)
& .OR.(viscC2smag.NE.0.)
& .OR.(viscC4smag.NE.0.)
harmonic=
& (viscAh.NE.0.)
& .OR.(viscAhD.NE.0.)
& .OR.(viscAhZ.NE.0.)
& .OR.(viscAhGrid.NE.0.)
& .OR.(viscC2leith.NE.0.)
& .OR.(viscC2leithD.NE.0.)
& .OR.(viscC2smag.NE.0.)
biharmonic=
& (viscA4.NE.0.)
& .OR.(viscA4D.NE.0.)
& .OR.(viscA4Z.NE.0.)
& .OR.(viscA4Grid.NE.0.)
& .OR.(viscC4leith.NE.0.)
& .OR.(viscC4leithD.NE.0.)
& .OR.(viscC4smag.NE.0.)
IF (useVariableViscosity) THEN
IF ((harmonic).AND.(viscAhReMax.NE.0.)) THEN
viscAhRe_max=SQRT(2.d0)/viscAhReMax
ELSE
viscAhRe_max=0.d0
ENDIF
IF ((biharmonic).AND.(viscA4ReMax.NE.0.)) THEN
viscA4Re_max=0.125d0*SQRT(2.d0)/viscA4ReMax
ELSE
viscA4Re_max=0.d0
ENDIF
calcLeith=
& (viscC2leith.NE.0.)
& .OR.(viscC2leithD.NE.0.)
& .OR.(viscC4leith.NE.0.)
& .OR.(viscC4leithD.NE.0.)
calcSmag=
& (viscC2smag.NE.0.)
& .OR.(viscC4smag.NE.0.)
IF (calcSmag) THEN
smag2fac=(viscC2smag/pi)**2
smag4fac=0.125d0*(viscC4smag/pi)**2
ELSE
smag2fac=0.d0
smag4fac=0.d0
ENDIF
IF (calcLeith) THEN
IF (useFullLeith) THEN
leith2fac =(viscC2leith /pi)**6
leithD2fac=(viscC2leithD/pi)**6
leith4fac =0.015625d0*(viscC4leith /pi)**6
leithD4fac=0.015625d0*(viscC4leithD/pi)**6
ELSE
leith2fac =(viscC2leith /pi)**3
leithD2fac=(viscC2leithD/pi)**3
leith4fac =0.125d0*(viscC4leith /pi)**3
leithD4fac=0.125d0*(viscC4leithD/pi)**3
ENDIF
ELSE
leith2fac=0.d0
leith4fac=0.d0
leithD2fac=0.d0
leithD4fac=0.d0
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
viscAh_D(i,j)=viscAhD
viscAh_Z(i,j)=viscAhZ
viscA4_D(i,j)=viscA4D
viscA4_Z(i,j)=viscA4Z
c
visca4_zsmg(i,j) = 0.d0
viscah_zsmg(i,j) = 0.d0
c
viscAh_Dlth(i,j) = 0.d0
viscA4_Dlth(i,j) = 0.d0
viscAh_DlthD(i,j)= 0.d0
viscA4_DlthD(i,j)= 0.d0
c
viscAh_DSmg(i,j) = 0.d0
viscA4_DSmg(i,j) = 0.d0
c
viscAh_ZLth(i,j) = 0.d0
viscA4_ZLth(i,j) = 0.d0
viscAh_ZLthD(i,j)= 0.d0
viscA4_ZLthD(i,j)= 0.d0
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
divDx(i,j) = 0.
divDy(i,j) = 0.
vrtDx(i,j) = 0.
vrtDy(i,j) = 0.
ENDDO
ENDDO
IF (calcLeith) THEN
IF (useCubedSphereExchange) THEN
CALL FILL_CS_CORNER_TR_RL( 1, .FALSE.,
& hDiv, bi,bj, myThid )
ENDIF
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
divDx(i,j) = (hDiv(i,j)-hDiv(i-1,j))*recip_DXC(i,j,bi,bj)
ENDDO
ENDDO
IF (useCubedSphereExchange) THEN
CALL FILL_CS_CORNER_TR_RL( 2, .FALSE.,
& hDiv, bi,bj, myThid )
ENDIF
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
divDy(i,j) = (hDiv(i,j)-hDiv(i,j-1))*recip_DYC(i,j,bi,bj)
ENDDO
ENDDO
DO j=2-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx-1
vrtDx(i,j) = (vort3(i+1,j)-vort3(i,j))
& *recip_DXG(i,j,bi,bj)
& *maskS(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx
vrtDy(i,j) = (vort3(i,j+1)-vort3(i,j))
& *recip_DYG(i,j,bi,bj)
& *maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
CCCCCCCCCCCCCCC Divergence Point CalculationsCCCCCCCCCCCCCCCCCCCC
lockey_2 = i+olx + (sNx+2*olx)*(j+oly-1)
& + (sNx+2*olx)*(sNy+2*oly)*(lockey_1-1)
CADJ STORE viscA4_ZSmg(i,j)
CADJ & = comlev1_mom_ijk_loop , key=lockey_2, byte=isbyte
CADJ STORE viscAh_ZSmg(i,j)
CADJ & = comlev1_mom_ijk_loop , key=lockey_2, byte=isbyte
L2 = L2_D(i,j,bi,bj)
L2rdt = 0.25d0*recip_dt*L2
L3 = L3_D(i,j,bi,bj)
L4rdt = L4rdt_D(i,j,bi,bj)
L5 = (L2*L3)
IF ( viscAhRe_max.GT.0. .AND. KE(i,j).GT.0. ) THEN
Uscl=SQRT(KE(i,j)*L2)*viscAhRe_max
ELSE
Uscl=0.
ENDIF
IF ( viscA4Re_max.GT.0. .AND. KE(i,j).GT.0. ) THEN
U4scl=SQRT(KE(i,j))*L3*viscA4Re_max
ELSE
U4scl=0.
ENDIF
IF (useFullLeith.AND.calcLeith) THEN
grdVrt=0.25d0*( (vrtDx(i,j+1)*vrtDx(i,j+1)
& + vrtDx(i,j)*vrtDx(i,j) )
& + (vrtDy(i+1,j)*vrtDy(i+1,j)
& + vrtDy(i,j)*vrtDy(i,j) ) )
grdDiv=0.25d0*( (divDx(i+1,j)*divDx(i+1,j)
& + divDx(i,j)*divDx(i,j) )
& + (divDy(i,j+1)*divDy(i,j+1)
& + divDy(i,j)*divDy(i,j) ) )
viscAh_DLth(i,j)=
& SQRT(leith2fac*grdVrt+leithD2fac*grdDiv)*L3
viscA4_DLth(i,j)=
& SQRT(leith4fac*grdVrt+leithD4fac*grdDiv)*L5
viscAh_DLthd(i,j)=
& SQRT(leithD2fac*grdDiv)*L3
viscA4_DLthd(i,j)=
& SQRT(leithD4fac*grdDiv)*L5
ELSEIF (calcLeith) THEN
grdVrt=MAX( ABS(vrtDx(i,j+1)), ABS(vrtDx(i,j)) )
grdVrt=MAX( grdVrt, ABS(vrtDy(i+1,j)) )
grdVrt=MAX( grdVrt, ABS(vrtDy(i,j)) )
grdDiv=MAX( ABS(divDx(i+1,j)), ABS(divDx(i,j)) )
grdDiv=MAX( grdDiv, ABS(divDy(i,j+1)) )
grdDiv=MAX( grdDiv, ABS(divDy(i,j)) )
viscAh_Dlth(i,j)=(leith2fac*grdVrt+(leithD2fac*grdDiv))*L3
viscA4_Dlth(i,j)=(leith4fac*grdVrt+(leithD4fac*grdDiv))*L5
viscAh_DlthD(i,j)=((leithD2fac*grdDiv))*L3
viscA4_DlthD(i,j)=((leithD4fac*grdDiv))*L5
ELSE
viscAh_Dlth(i,j)=0.d0
viscA4_Dlth(i,j)=0.d0
viscAh_DlthD(i,j)=0.d0
viscA4_DlthD(i,j)=0.d0
ENDIF
IF (calcSmag) THEN
viscAh_DSmg(i,j)=L2
& *SQRT(tension(i,j)**2
& +0.25d0*(strain(i+1, j )**2+strain( i ,j+1)**2
& +strain(i , j )**2+strain(i+1,j+1)**2))
viscA4_DSmg(i,j)=smag4fac*L2*viscAh_DSmg(i,j)
viscAh_DSmg(i,j)=smag2fac*viscAh_DSmg(i,j)
ELSE
viscAh_DSmg(i,j)=0.d0
viscA4_DSmg(i,j)=0.d0
ENDIF
Alin=viscAhD+viscAhGrid*L2rdt
& +viscAh_DLth(i,j)+viscAh_DSmg(i,j)
viscAh_DMin(i,j)=MAX(viscAhGridMin*L2rdt,Uscl)
viscAh_D(i,j)=MAX(viscAh_DMin(i,j),Alin)
viscAh_DMax(i,j)=MIN(viscAhGridMax*L2rdt,viscAhMax)
viscAh_D(i,j)=MIN(viscAh_DMax(i,j),viscAh_D(i,j))
Alin=viscA4D+viscA4Grid*L4rdt
& +viscA4_DLth(i,j)+viscA4_DSmg(i,j)
viscA4_DMin(i,j)=MAX(viscA4GridMin*L4rdt,U4scl)
viscA4_D(i,j)=MAX(viscA4_DMin(i,j),Alin)
viscA4_DMax(i,j)=MIN(viscA4GridMax*L4rdt,viscA4Max)
viscA4_D(i,j)=MIN(viscA4_DMax(i,j),viscA4_D(i,j))
CCCCCCCCCCCCC Vorticity Point CalculationsCCCCCCCCCCCCCCCCCC
L2 = L2_Z(i,j,bi,bj)
L2rdt = 0.25d0*recip_dt*L2
L3 = L3_Z(i,j,bi,bj)
L4rdt = L4rdt_Z(i,j,bi,bj)
L5 = (L2*L3)
IF ( viscAhRe_max.GT.0. .OR. viscA4Re_max.GT.0. ) THEN
keZpt=0.25d0*( (KE(i,j)+KE(i-1,j-1))
& +(KE(i-1,j)+KE(i,j-1)) )
IF ( keZpt.GT.0. ) THEN
Uscl = SQRT(keZpt*L2)*viscAhRe_max
U4scl= SQRT(keZpt)*L3*viscA4Re_max
ELSE
Uscl =0.
U4scl=0.
ENDIF
ELSE
Uscl =0.
U4scl=0.
ENDIF
IF (useFullLeith.AND.calcLeith) THEN
grdVrt=0.25d0*( (vrtDx(i-1,j)*vrtDx(i-1,j)
& + vrtDx(i,j)*vrtDx(i,j) )
& + (vrtDy(i,j-1)*vrtDy(i,j-1)
& + vrtDy(i,j)*vrtDy(i,j) ) )
grdDiv=0.25d0*( (divDx(i,j-1)*divDx(i,j-1)
& + divDx(i,j)*divDx(i,j) )
& + (divDy(i-1,j)*divDy(i-1,j)
& + divDy(i,j)*divDy(i,j) ) )
viscAh_ZLth(i,j)=
& SQRT(leith2fac*grdVrt+leithD2fac*grdDiv)*L3
viscA4_ZLth(i,j)=
& SQRT(leith4fac*grdVrt+leithD4fac*grdDiv)*L5
viscAh_ZLthD(i,j)=
& SQRT(leithD2fac*grdDiv)*L3
viscA4_ZLthD(i,j)=
& SQRT(leithD4fac*grdDiv)*L5
ELSEIF (calcLeith) THEN
grdVrt=MAX( ABS(vrtDx(i-1,j)), ABS(vrtDx(i,j)) )
grdVrt=MAX( grdVrt, ABS(vrtDy(i,j-1)) )
grdVrt=MAX( grdVrt, ABS(vrtDy(i,j)) )
grdDiv=MAX( ABS(divDx(i,j)), ABS(divDx(i,j-1)) )
grdDiv=MAX( grdDiv, ABS(divDy(i,j)) )
grdDiv=MAX( grdDiv, ABS(divDy(i-1,j)) )
viscAh_ZLth(i,j)=(leith2fac*grdVrt+(leithD2fac*grdDiv))*L3
viscA4_ZLth(i,j)=(leith4fac*grdVrt+(leithD4fac*grdDiv))*L5
viscAh_ZLthD(i,j)=(leithD2fac*grdDiv)*L3
viscA4_ZLthD(i,j)=(leithD4fac*grdDiv)*L5
ELSE
viscAh_ZLth(i,j)=0.d0
viscA4_ZLth(i,j)=0.d0
viscAh_ZLthD(i,j)=0.d0
viscA4_ZLthD(i,j)=0.d0
ENDIF
IF (calcSmag) THEN
viscAh_ZSmg(i,j)=L2
& *SQRT(strain(i,j)**2
& +0.25d0*(tension( i , j )**2+tension( i ,j-1)**2
& +tension(i-1, j )**2+tension(i-1,j-1)**2))
viscA4_ZSmg(i,j)=smag4fac*L2*viscAh_ZSmg(i,j)
viscAh_ZSmg(i,j)=smag2fac*viscAh_ZSmg(i,j)
ENDIF
Alin=viscAhZ+viscAhGrid*L2rdt
& +viscAh_ZLth(i,j)+viscAh_ZSmg(i,j)
viscAh_ZMin(i,j)=MAX(viscAhGridMin*L2rdt,Uscl)
viscAh_Z(i,j)=MAX(viscAh_ZMin(i,j),Alin)
viscAh_ZMax(i,j)=MIN(viscAhGridMax*L2rdt,viscAhMax)
viscAh_Z(i,j)=MIN(viscAh_ZMax(i,j),viscAh_Z(i,j))
Alin=viscA4Z+viscA4Grid*L4rdt
& +viscA4_ZLth(i,j)+viscA4_ZSmg(i,j)
viscA4_ZMin(i,j)=MAX(viscA4GridMin*L4rdt,U4scl)
viscA4_Z(i,j)=MAX(viscA4_ZMin(i,j),Alin)
viscA4_ZMax(i,j)=MIN(viscA4GridMax*L4rdt,viscA4Max)
viscA4_Z(i,j)=MIN(viscA4_ZMax(i,j),viscA4_Z(i,j))
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
viscAh_D(i,j)=viscAhD
viscAh_Z(i,j)=viscAhZ
viscA4_D(i,j)=viscA4D
viscA4_Z(i,j)=viscA4Z
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_HDISSIP(
I bi,bj,k,
I hDiv,vort3,tension,strain,KE,
I hFacZ,
I viscAh_s,viscAh_t,viscA4_s,viscA4_t,
I harmonic,biharmonic,useVariableViscosity,
O uDissip,vDissip,
I myThid)
IMPLICIT NONE
C
C
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
Real*8 hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_s(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_t(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_s(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_t(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
LOGICAL harmonic, biharmonic, useVariableViscosity
INTEGER myThid
INTEGER I,J
IF (harmonic) THEN
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
uDissip(i,j) =
& recip_dyg(i,j,bi,bj)*recip_dyg(i,j,bi,bj)
& *recip_dxc(i,j,bi,bj)
& *(
& dyf( i , j ,bi,bj)*dyf( i , j ,bi,bj)
& *viscAh_t( i , j )*tension( i , j )
& -dyf(i-1, j ,bi,bj)*dyf(i-1, j ,bi,bj)
& *viscAh_t(i-1, j )*tension(i-1, j )
& )
& +recip_dxc(i,j,bi,bj)*recip_dxc(i,j,bi,bj)
& *recip_dyg(i,j,bi,bj)
& *(
& dxv( i ,j+1,bi,bj)*dxv( i ,j+1,bi,bj)
& *viscAh_s(i,j+1)*strain( i ,j+1)
& -dxv( i , j ,bi,bj)*dxv( i , j ,bi,bj)
& *viscAh_s(i, j )*strain( i , j )
& )
vDissip(i,j) =
& recip_dyc(i,j,bi,bj)*recip_dyc(i,j,bi,bj)
& *recip_dxg(i,j,bi,bj)
& *(
& dyu(i+1, j ,bi,bj)*dyu(i+1, j ,bi,bj)
& *viscAh_s(i+1,j)*strain(i+1,j)
& -dyu( i , j ,bi,bj)*dyu( i , j ,bi,bj)
& *viscAh_s( i ,j)*strain( i ,j)
& )
& -recip_dxg(i,j,bi,bj)*recip_dxg(i,j,bi,bj)
& *recip_dyc(i,j,bi,bj)
& *(
& dxf( i , j ,bi,bj)*dxf( i , j ,bi,bj)
& *viscAh_t(i, j )*tension(i, j )
& -dxf( i ,j-1,bi,bj)*dxf( i ,j-1,bi,bj)
& *viscAh_t(i,j-1)*tension(i,j-1)
& )
ENDDO
ENDDO
ENDIF
IF (biharmonic) THEN
STOP 'MOM_HDISSIP: BIHARMONIC NOT ALLOWED WITH STRAIN-TENSION'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_QUASIHYDROSTATIC(
I bi,bj,k,
I uFld, vFld,
O effectiveBuoy,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 effectiveBuoy(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER iMin,iMax,jMin,jMax
PARAMETER( iMin = 0 , iMax = sNx+1 )
PARAMETER( jMin = 0 , jMax = sNy+1 )
INTEGER i,j
Real*8 scalingFactor
scalingFactor=rhoConst*gravitySign*recip_gravity
IF ( use3dCoriolis ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
effectiveBuoy(i,j)=effectiveBuoy(i,j)
& +scalingFactor*
& fCoriCos(i,j,bi,bj)*
& ( angleCosC(i,j,bi,bj)*0.5d0 *
& (uFld(i,j,k,bi,bj)+uFld(i+1,j,k,bi,bj))
& -angleSinC(i,j,bi,bj)*0.5d0 *
& (vFld(i,j,k,bi,bj)+vFld(i,j+1,k,bi,bj))
& )
ENDDO
ENDDO
ENDIF
IF ( useNHMTerms ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
effectiveBuoy(i,j)=effectiveBuoy(i,j)
& +scalingFactor*
& ( (uFld( i ,j,k,bi,bj)*uFld( i ,j,k,bi,bj)
& +uFld(i+1,j,k,bi,bj)*uFld(i+1,j,k,bi,bj))
& + (vFld(i, j ,k,bi,bj)*vFld(i, j ,k,bi,bj)
& +vFld(i,j+1,k,bi,bj)*vFld(i,j+1,k,bi,bj))
& )* 0.5d0 * recip_rSphere*recip_deepFacC(k)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_CORIOLIS_NH(
I bi,bj,k,wFld,
O uCoriolisTerm,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 uCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1
Real*8 wMsk
kp1=min(k+1,Nr)
wMsk=1.
IF (k.EQ.Nr) wMsk=0.
DO j=1-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx
uCoriolisTerm(i,j) =
& 0.5*( fCoriCos( i ,j,bi,bj)*angleCosC( i ,j,bi,bj)
& *0.5*( wFld( i ,j, k ,bi,bj)*rVel2wUnit( k )
& +wFld( i ,j,kp1,bi,bj)*rVel2wUnit(kp1)*wMsk )
& + fCoriCos(i-1,j,bi,bj)*angleCosC(i-1,j,bi,bj)
& *0.5*( wFld(i-1,j, k ,bi,bj)*rVel2wUnit( k )
& +wFld(i-1,j,kp1,bi,bj)*rVel2wUnit(kp1)*wMsk )
& )*gravitySign
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_METRIC_NH(
I bi,bj,k,
I uFld, wFld,
O uMetricTerms,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 uMetricTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1
Real*8 wVelBottomOverride
kp1=min(k+1,Nr)
wVelBottomOverride=1.
IF (k.EQ.Nr) wVelBottomOverride=0.
DO j=1-Olx,sNy+Oly
DO i=1-Olx+1,sNx+Olx
uMetricTerms(i,j) = uFld(i,j)*recip_rSphere*recip_deepFacC(k)
& *0.25*( (wFld(i-1,j,kp1,bi,bj)+wFld(i,j,kp1,bi,bj))
& *rVel2wUnit(kp1)*wVelBottomOverride
& + (wFld(i-1,j, k ,bi,bj)+wFld(i,j, k ,bi,bj))
& *rVel2wUnit( k )
& )*gravitySign
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_BOTTOMDRAG(
I bi,bj,k,
I uFld, KE, KappaRU,
O uDragTerms,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 uDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kDown,kDownC,kBottom
Real*8 viscFac, dragFac
Real*8 rdrckp1, maskDown
IF ( usingZCoords ) THEN
kBottom = Nr
kDown = min(k+1,kBottom)
kDownC = kDown
dragFac = 1.d0
ELSE
kBottom = 1
kDown = max(k-1,kBottom)
kDownC = k
dragFac = mass2rUnit*rhoConst
ENDIF
rdrckp1=recip_drC(kDownC)
IF (k.EQ.kBottom) rdrckp1=recip_drF(k)
viscFac=0.
IF (no_slip_bottom) viscFac=1.
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
maskDown=maskW(i,j,kDown,bi,bj)
IF (k.EQ.kBottom) maskDown=0.
uDragTerms(i,j)=
& -recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
& *(
& 2.*KappaRU(i,j,kDownC)*rdrckp1*viscFac
& + bottomDragLinear*dragFac
& )*(1.-maskDown)*uFld(i,j)
IF ( (KE(i,j)+KE(i-1,j)) .NE. 0. ) THEN
uDragTerms(i,j)=uDragTerms(i,j)
& -recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
& *bottomDragQuadratic*SQRT(KE(i,j)+KE(i-1,j))*dragFac
& *(1.-maskDown)*uFld(i,j)
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_RVISCFLUX(
I bi,bj,k,
I uFld, KappaRU,
O rViscFluxU,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 rViscFluxU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
IF ( k.LE.1 .OR. k.GT.Nr ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rViscFluxU(i,j) = 0.d0
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
rViscFluxU(i,j) =
& -KappaRU(i,j,k)
& *rAw(i,j,bi,bj)*deepFac2F(k)*rhoFacF(k)
& *( uFld(i,j,k,bi,bj)-uFld(i,j,k-1,bi,bj)
& )*rkSign*recip_drC(k)
& *maskW(i,j,k,bi,bj)
& *maskW(i,j,k-1,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_SIDEDRAG(
I bi,bj,k,
I uFld, del2u, hFacZ,
I viscAh_Z,viscA4_Z,
I harmonic,biharmonic,useVariableViscosity,
O uDragTerms,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
LOGICAL harmonic,biharmonic,useVariableViscosity
INTEGER myThid
Real*8 uDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 hFacZClosedS,hFacZClosedN
Real*8 Ahtmp,A4tmp
IF ( sideDragFactor.LE.0. ) THEN
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
hFacZClosedS = hFacW(i,j,k,bi,bj) - hFacZ(i,j)
hFacZClosedN = hFacW(i,j,k,bi,bj) - hFacZ(i,j+1)
Ahtmp=min(viscAh+viscAhGrid*rAw(i,j,bi,bj)/deltaTmom,
& viscAhMax)
A4tmp=min(viscA4+viscA4Grid*(rAw(i,j,bi,bj)**2)/deltaTmom,
& viscA4Max)
A4tmp=min(A4tmp,viscA4GridMax*(rAw(i,j,bi,bj)**2)/deltaTmom)
A4tmp=max(A4tmp,viscA4GridMin*(rAw(i,j,bi,bj)**2)/deltaTmom)
uDragTerms(i,j) =
& -recip_hFacW(i,j,k,bi,bj)
& *recip_drF(k)*recip_rAw(i,j,bi,bj)
& *( hFacZClosedS*dxV(i, j ,bi,bj)
& *recip_dyU(i, j ,bi,bj)
& +hFacZClosedN*dxV(i,j+1,bi,bj)
& *recip_dyU(i,j+1,bi,bj) )
& *drF(k)*2.*(
& Ahtmp*uFld(i,j)
& -A4tmp*del2u(i,j)
& )
ENDDO
ENDDO
ELSE
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
hFacZClosedS = hFacW(i,j,k,bi,bj) - hFacW(i,j-1,k,bi,bj)
hFacZClosedN = hFacW(i,j,k,bi,bj) - hFacW(i,j+1,k,bi,bj)
hFacZClosedS = MAX( 0.d0, hFacZClosedS )
hFacZClosedN = MAX( 0.d0, hFacZClosedN )
uDragTerms(i,j) =
& -recip_hFacW(i,j,k,bi,bj)
& *recip_drF(k)*recip_rAw(i,j,bi,bj)
& *( hFacZClosedS*dxV(i, j ,bi,bj)*recip_dyU(i, j ,bi,bj)
& *( viscAh_Z(i,j )*uFld(i,j)
& -viscA4_Z(i,j )*del2u(i,j) )
& +hFacZClosedN*dxV(i,j+1,bi,bj)*recip_dyU(i,j+1,bi,bj)
& *( viscAh_Z(i,j+1)*uFld(i,j)
& -viscA4_Z(i,j+1)*del2u(i,j) )
& )*drF(k)*sideDragFactor
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_CORIOLIS_NH(
I bi,bj,k,wFld,
O vCoriolisTerm,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 vCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1
Real*8 wMsk
kp1=min(k+1,Nr)
wMsk=1.
IF (k.EQ.Nr) wMsk=0.
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
vCoriolisTerm(i,j) =
& -0.5*( fCoriCos( i ,j,bi,bj)*angleSinC(i, j ,bi,bj)
& *0.5*( wFld( i ,j, k ,bi,bj)*rVel2wUnit( k )
& +wFld( i ,j,kp1,bi,bj)*rVel2wUnit(kp1)*wMsk )
& + fCoriCos(i,j-1,bi,bj)*angleSinC(i,j-1,bi,bj)
& *0.5*( wFld(i,j-1, k ,bi,bj)*rVel2wUnit( k )
& +wFld(i,j-1,kp1,bi,bj)*rVel2wUnit(kp1)*wMsk )
& )*gravitySign
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_METRIC_NH(
I bi,bj,k,
I vFld,wFld,
O vMetricTerms,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 vMetricTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kp1
Real*8 wVelBottomOverride
kp1=min(k+1,Nr)
wVelBottomOverride=1.
IF (k.EQ.Nr) wVelBottomOverride=0.
DO j=1-Olx+1,sNy+Oly
DO i=1-Olx,sNx+Olx
vMetricTerms(i,j) = vFld(i,j)*recip_rSphere*recip_deepFacC(k)
& *0.25*( (wFld(i,j-1,kp1,bi,bj)+wFld(i,j,kp1,bi,bj))
& *rVel2wUnit(kp1)*wVelBottomOverride
& + (wFld(i,j-1, k ,bi,bj)+wFld(i,j, k ,bi,bj))
& *rVel2wUnit( k )
& )*gravitySign
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_BOTTOMDRAG(
I bi,bj,k,
I vFld, KE, KappaRV,
O vDragTerms,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 vDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,kDown,kDownC,kBottom
Real*8 viscFac, dragFac
Real*8 rdrckp1, maskDown
IF ( usingZCoords ) THEN
kBottom = Nr
kDown = min(k+1,kBottom)
kDownC = kDown
dragFac = 1.d0
ELSE
kBottom = 1
kDown = max(k-1,kBottom)
kDownC = k
dragFac = mass2rUnit*rhoConst
ENDIF
rdrckp1=recip_drC(kDownC)
viscFac=0.
IF (no_slip_bottom) viscFac=1.
IF (k.EQ.kBottom) rdrckp1=recip_drF(k)
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
maskDown=maskS(i,j,kdown,bi,bj)
IF (k.EQ.kBottom) maskDown=0.
vDragTerms(i,j)=
& -recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
& *(
& 2.*KappaRV(i,j,kDownC)*rdrckp1*viscFac
& + bottomDragLinear*dragFac
& )*(1.-maskDown)*vFld(i,j)
IF ( (KE(i,j)+KE(i,j-1)) .NE. 0. ) THEN
vDragTerms(i,j)=vDragTerms(i,j)
& -recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
& *bottomDragQuadratic*SQRT(KE(i,j)+KE(i,j-1))*dragFac
& *(1.-maskDown)*vFld(i,j)
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_RVISCFLUX(
I bi,bj,k,
I vFld, KappaRV,
O rViscFluxV,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
Real*8 rViscFluxV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
IF ( k.LE.1 .OR. k.GT.Nr ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rViscFluxV(i,j) = 0.d0
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
rViscFluxV(i,j) =
& -KappaRV(i,j,k)
& *rAs(i,j,bi,bj)*deepFac2F(k)*rhoFacF(k)
& *( vFld(i,j,k,bi,bj)-vFld(i,j,k-1,bi,bj)
& )*rkSign*recip_drC(k)
& *maskS(i,j,k,bi,bj)
& *maskS(i,j,k-1,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_SIDEDRAG(
I bi,bj,k,
I vFld, del2v, hFacZ,
I viscAh_Z,viscA4_Z,
I harmonic,biharmonic,useVariableViscosity,
O vDragTerms,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
LOGICAL harmonic,biharmonic,useVariableViscosity
INTEGER myThid
Real*8 vDragTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 hFacZClosedE,hFacZClosedW
Real*8 Ahtmp,A4tmp
IF ( sideDragFactor.LE.0. ) THEN
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
hFacZClosedW = hFacS(i,j,k,bi,bj) - hFacZ(i,j)
hFacZClosedE = hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
Ahtmp=min(viscAh+viscAhGrid*rAs(i,j,bi,bj)/deltaTmom,
& viscAhMax)
A4tmp=min(viscA4+viscA4Grid*(rAs(i,j,bi,bj)**2)/deltaTmom,
& viscA4Max)
IF (viscA4GridMax.GT.0.) THEN
A4tmp=min(A4tmp,viscA4GridMax*(rAs(i,j,bi,bj)**2)/deltaTmom)
ENDIF
A4tmp=max(A4tmp,viscA4GridMin*(rAs(i,j,bi,bj)**2)/deltaTmom)
vDragTerms(i,j) =
& -recip_hFacS(i,j,k,bi,bj)
& *recip_drF(k)*recip_rAs(i,j,bi,bj)
& *( hFacZClosedW*dyU( i ,j,bi,bj)
& *recip_dxV( i ,j,bi,bj)
& +hFacZClosedE*dyU(i+1,j,bi,bj)
& *recip_dxV(i+1,j,bi,bj) )
& *drF(k)*2.*(
& Ahtmp*vFld(i,j)*cosFacV(j,bi,bj)
& -A4tmp*del2v(i,j)*cosFacV(j,bi,bj)
& )
ENDDO
ENDDO
ELSE
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
hFacZClosedW = hFacS(i,j,k,bi,bj) - hFacS(i-1,j,k,bi,bj)
hFacZClosedE = hFacS(i,j,k,bi,bj) - hFacS(i+1,j,k,bi,bj)
hFacZClosedW = MAX( 0.d0, hFacZClosedW )
hFacZClosedE = MAX( 0.d0, hFacZClosedE )
vDragTerms(i,j) =
& -recip_hFacS(i,j,k,bi,bj)
& *recip_drF(k)*recip_rAs(i,j,bi,bj)
& *( hFacZClosedW*dyU( i ,j,bi,bj)*recip_dxV( i ,j,bi,bj)
& *( viscAh_Z(i ,j)*vFld(i,j)*cosFacV(j,bi,bj)
& -viscA4_Z(i ,j)*del2v(i,j)*cosFacV(j,bi,bj) )
& +hFacZClosedE*dyU(i+1,j,bi,bj)*recip_dxV(i+1,j,bi,bj)
& *( viscAh_Z(i+1,j)*vFld(i,j)*cosFacV(j,bi,bj)
& -viscA4_Z(i+1,j)*del2v(i,j)*cosFacV(j,bi,bj) )
& )*drF(k)*sideDragFactor
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_CALC_RTRANS(
I k, bi, bj,
O rTransU, rTransV,
I myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER k, bi, bj, myIter, myThid
Real*8 myTime
Real*8 rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
IF ( k.GT.Nr ) THEN
DO j=1-OLy+1,sNy+OLy
DO i=1-OLx+1,sNx+OLx
rTransU(i,j) = 0.
rTransV(i,j) = 0.
ENDDO
ENDDO
ELSE
DO j=1-OLy+1,sNy+OLy
DO i=1-OLx+1,sNx+OLx
rTransU(i,j) =
& 0.5d0*( wVel(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)
& +wVel( i ,j,k,bi,bj)*rA( i ,j,bi,bj)
& )*deepFac2F(k)*rhoFacF(k)
rTransV(i,j) =
& 0.5d0*( wVel(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)
& +wVel(i, j ,k,bi,bj)*rA(i, j ,bi,bj)
& )*deepFac2F(k)*rhoFacF(k)
ENDDO
ENDDO
ENDIF
RETURN
END
CBOI
C
CEOI
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_FLUXFORM(
I bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown,
I KappaRU, KappaRV,
U fVerU, fVerV,
O guDiss, gvDiss,
I myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k,kUp,kDown
Real*8 KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 fVerU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 fVerV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 guDiss(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 gvDiss(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER i,j
INTEGER imomkey
Real*8 vF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 v4F(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 cF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 mT(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fVrUp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fVrDw(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 xA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uDudxFac
Real*8 AhDudxFac
Real*8 vDudyFac
Real*8 AhDudyFac
Real*8 rVelDudrFac
Real*8 ArDudrFac
Real*8 fuFac
Real*8 mtFacU
Real*8 mtNHFacU
Real*8 uDvdxFac
Real*8 AhDvdxFac
Real*8 vDvdyFac
Real*8 AhDvdyFac
Real*8 rVelDvdrFac
Real*8 ArDvdrFac
Real*8 fvFac
Real*8 mtFacV
Real*8 mtNHFacV
Real*8 sideMaskFac
LOGICAL bottomDragTerms,harmonic,biharmonic,useVariableViscosity
act0 = k - 1
max0 = Nr
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
imomkey = (act0 + 1)
& + act1*max0
& + act2*max0*max1
& + act3*max0*max1*max2
& + act4*max0*max1*max2*max3
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
vF(i,j) = 0.
v4F(i,j) = 0.
cF(i,j) = 0.
mT(i,j) = 0.
fZon(i,j) = 0.
fMer(i,j) = 0.
fVrUp(i,j)= 0.
fVrDw(i,j)= 0.
rTransU(i,j)= 0.
rTransV(i,j)= 0.
hDiv(i,j) = 0.
vort3(i,j) = 0.
strain(i,j) = 0.
tension(i,j)= 0.
guDiss(i,j) = 0.
gvDiss(i,j) = 0.
ENDDO
ENDDO
uDudxFac = afFacMom*1.
AhDudxFac = vfFacMom*1.
vDudyFac = afFacMom*1.
AhDudyFac = vfFacMom*1.
rVelDudrFac = afFacMom*1.
ArDudrFac = vfFacMom*1.
mtFacU = mtFacMom*1.
mtNHFacU = 1.
fuFac = cfFacMom*1.
uDvdxFac = afFacMom*1.
AhDvdxFac = vfFacMom*1.
vDvdyFac = afFacMom*1.
AhDvdyFac = vfFacMom*1.
rVelDvdrFac = afFacMom*1.
ArDvdrFac = vfFacMom*1.
mtFacV = mtFacMom*1.
mtNHFacV = 1.
fvFac = cfFacMom*1.
IF (implicitViscosity) THEN
ArDudrFac = 0.
ArDvdrFac = 0.
ENDIF
IF ( no_slip_sides ) THEN
sideMaskFac = sideDragFactor
ELSE
sideMaskFac = 0.d0
ENDIF
IF ( no_slip_bottom
& .OR. bottomDragQuadratic.NE.0.
& .OR. bottomDragLinear.NE.0.) THEN
bottomDragTerms=.TRUE.
ELSE
bottomDragTerms=.FALSE.
ENDIF
CALL MOM_CALC_HFACZ(bi,bj,k,hFacZ,r_hFacZ,myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
xA(i,j) = dyG(i,j,bi,bj)*deepFacC(k)
& *drF(k)*hFacW(i,j,k,bi,bj)
yA(i,j) = dxG(i,j,bi,bj)*deepFacC(k)
& *drF(k)*hFacS(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
uFld(i,j) = uVel(i,j,k,bi,bj)
vFld(i,j) = vVel(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
uTrans(i,j) = uFld(i,j)*xA(i,j)*rhoFacC(k)
vTrans(i,j) = vFld(i,j)*yA(i,j)*rhoFacC(k)
ENDDO
ENDDO
CALL MOM_CALC_KE(bi,bj,k,2,uFld,vFld,KE,myThid)
IF ( momViscosity) THEN
CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)
CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( hFacZ(i,j).EQ.0. ) THEN
vort3(i,j) = sideMaskFac*vort3(i,j)
strain(i,j) = sideMaskFac*strain(i,j)
ENDIF
ENDDO
ENDDO
ENDIF
IF (momAdvection.AND.k.EQ.1) THEN
CALL MOM_CALC_RTRANS( k, bi, bj,
O rTransU, rTransV,
I myTime, myIter, myThid)
CALL MOM_U_ADV_WU( bi,bj,k,uVel,wVel,rTransU,
O fVerU(1-OLx,1-OLy,kUp), myThid )
CALL MOM_V_ADV_WV( bi,bj,k,vVel,wVel,rTransV,
O fVerV(1-OLx,1-OLy,kUp), myThid )
ENDIF
IF (momAdvection) THEN
CALL MOM_CALC_RTRANS( k+1, bi, bj,
O rTransU, rTransV,
I myTime, myIter, myThid)
ENDIF
IF (momViscosity) THEN
CALL MOM_CALC_VISC(
I bi,bj,k,
O viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
O harmonic,biharmonic,useVariableViscosity,
I hDiv,vort3,tension,strain,KE,hFacZ,
I myThid)
ENDIF
IF (momAdvection) THEN
CALL MOM_U_ADV_UU(bi,bj,k,uTrans,uFld,fZon,myThid)
CALL MOM_U_ADV_VU(bi,bj,k,vTrans,uFld,fMer,myThid)
CALL MOM_U_ADV_WU(
I bi,bj,k+1,uVel,wVel,rTransU,
O fVerU(1-OLx,1-OLy,kDown), myThid )
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) =
& -recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k)*recip_rhoFacC(k)
& *( ( fZon(i,j ) - fZon(i-1,j) )*uDudxFac
& +( fMer(i,j+1) - fMer(i, j) )*vDudyFac
& +(fVerU(i,j,kDown) - fVerU(i,j,kUp))*rkSign*rVelDudrFac
& )
ENDDO
ENDDO
ELSE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
gU(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDIF
IF (momViscosity) THEN
IF (biharmonic)
& CALL MOM_U_DEL2U(bi,bj,k,uFld,hFacZ,v4f,myThid)
CALL MOM_U_XVISCFLUX(bi,bj,k,uFld,v4F,fZon,
I viscAh_D,viscA4_D,myThid)
CALL MOM_U_YVISCFLUX(bi,bj,k,uFld,v4F,hFacZ,fMer,
I viscAh_Z,viscA4_Z,myThid)
IF (.NOT.implicitViscosity) THEN
CALL MOM_U_RVISCFLUX(bi,bj, k, uVel,KappaRU,fVrUp,myThid)
CALL MOM_U_RVISCFLUX(bi,bj,k+1,uVel,KappaRU,fVrDw,myThid)
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
guDiss(i,j) =
& -recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k)
& *( ( fZon(i,j ) - fZon(i-1,j) )*AhDudxFac
& +( fMer(i,j+1) - fMer(i, j) )*AhDudyFac
& +( fVrDw(i,j) - fVrUp(i,j) )*rkSign*ArDudrFac
& *recip_rhoFacC(k)
& )
ENDDO
ENDDO
IF (no_slip_sides) THEN
CALL MOM_U_SIDEDRAG(
I bi,bj,k,
I uFld, v4f, hFacZ,
I viscAh_Z,viscA4_Z,
I harmonic,biharmonic,useVariableViscosity,
O vF,
I myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gUdiss(i,j) = gUdiss(i,j) + vF(i,j)
ENDDO
ENDDO
ENDIF
IF (bottomDragTerms) THEN
CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gUdiss(i,j) = gUdiss(i,j) + vF(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
IF (useNHMTerms) THEN
CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,mT,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mtNHFacU*mT(i,j)
ENDDO
ENDDO
ENDIF
IF ( usingSphericalPolarGrid .AND. metricTerms ) THEN
CALL MOM_U_METRIC_SPHERE(bi,bj,k,uFld,vFld,mT,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mtFacU*mT(i,j)
ENDDO
ENDDO
ENDIF
IF ( usingCylindricalGrid .AND. metricTerms ) THEN
CALL MOM_U_METRIC_CYLINDER(bi,bj,k,uFld,vFld,mT,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+mtFacU*mT(i,j)
ENDDO
ENDDO
ENDIF
IF (momAdvection) THEN
CALL MOM_V_ADV_UV(bi,bj,k,uTrans,vFld,fZon,myThid)
CALL MOM_V_ADV_VV(bi,bj,k,vTrans,vFld,fMer,myThid)
CALL MOM_V_ADV_WV(
I bi,bj,k+1,vVel,wVel,rTransV,
O fVerV(1-OLx,1-OLy,kDown), myThid )
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) =
& -recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)*recip_rhoFacC(k)
& *( ( fZon(i+1,j) - fZon(i,j ) )*uDvdxFac
& +( fMer(i, j) - fMer(i,j-1) )*vDvdyFac
& +(fVerV(i,j,kDown) - fVerV(i,j,kUp))*rkSign*rVelDvdrFac
& )
ENDDO
ENDDO
ELSE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
gV(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDIF
IF (momViscosity) THEN
IF (biharmonic)
& CALL MOM_V_DEL2V(bi,bj,k,vFld,hFacZ,v4f,myThid)
CALL MOM_V_XVISCFLUX(bi,bj,k,vFld,v4f,hFacZ,fZon,
I viscAh_Z,viscA4_Z,myThid)
CALL MOM_V_YVISCFLUX(bi,bj,k,vFld,v4f,fMer,
I viscAh_D,viscA4_D,myThid)
IF (.NOT.implicitViscosity) THEN
CALL MOM_V_RVISCFLUX(bi,bj, k, vVel,KappaRV,fVrUp,myThid)
CALL MOM_V_RVISCFLUX(bi,bj,k+1,vVel,KappaRV,fVrDw,myThid)
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gvDiss(i,j) =
& -recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
& *( ( fZon(i+1,j) - fZon(i,j ) )*AhDvdxFac
& +( fMer(i, j) - fMer(i,j-1) )*AhDvdyFac
& +( fVrDw(i,j) - fVrUp(i,j) )*rkSign*ArDvdrFac
& *recip_rhoFacC(k)
& )
ENDDO
ENDDO
IF (no_slip_sides) THEN
CALL MOM_V_SIDEDRAG(
I bi,bj,k,
I vFld, v4f, hFacZ,
I viscAh_Z,viscA4_Z,
I harmonic,biharmonic,useVariableViscosity,
O vF,
I myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gvDiss(i,j) = gvDiss(i,j) + vF(i,j)
ENDDO
ENDDO
ENDIF
IF (bottomDragTerms) THEN
CALL MOM_V_BOTTOMDRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gvDiss(i,j) = gvDiss(i,j) + vF(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
IF (useNHMTerms) THEN
CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,mT,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mtNHFacV*mT(i,j)
ENDDO
ENDDO
ENDIF
IF ( usingSphericalPolarGrid .AND. metricTerms ) THEN
CALL MOM_V_METRIC_SPHERE(bi,bj,k,uFld,mT,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mtFacV*mT(i,j)
ENDDO
ENDDO
ENDIF
IF ( usingCylindricalGrid .AND. metricTerms ) THEN
CALL MOM_V_METRIC_CYLINDER(bi,bj,k,uFld,vFld,mT,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+mtFacV*mT(i,j)
ENDDO
ENDDO
ENDIF
IF (.NOT.useCDscheme) THEN
CALL MOM_U_CORIOLIS(bi,bj,k,vFld,cf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+fuFac*cf(i,j)
ENDDO
ENDDO
CALL MOM_V_CORIOLIS(bi,bj,k,uFld,cf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+fvFac*cf(i,j)
ENDDO
ENDDO
ENDIF
IF ( use3dCoriolis ) THEN
CALL MOM_U_CORIOLIS_NH(bi,bj,k,wVel,cf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+fuFac*cf(i,j)
ENDDO
ENDDO
IF ( usingCurvilinearGrid ) THEN
CALL MOM_V_CORIOLIS_NH(bi,bj,k,wVel,cf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+fvFac*cf(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)*maskW(i,j,k,bi,bj)
guDiss(i,j) = guDiss(i,j) *maskW(i,j,k,bi,bj)
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)*maskS(i,j,k,bi,bj)
gvDiss(i,j) = gvDiss(i,j) *maskS(i,j,k,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_ADV_UU(
I bi,bj,k,
I uTrans, uFld,
O AdvectFluxUU,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 AdvectFluxUU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
AdvectFluxUU(i,j) =
& 0.25*( uTrans(i,j) + uTrans(i+1,j) )
& *( uFld(i,j) + uFld(i+1,j) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_ADV_VU(
I bi,bj,k,
I vTrans, uFld,
O AdvectFluxVU,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 AdvectFluxVU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
AdvectFluxVU(i,j) =
& 0.25*( vTrans(i,j) + vTrans(i-1,j) )
& *( uFld(i,j) + uFld(i,j-1) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_ADV_WU(
I bi,bj,k,
I uFld,wFld,rTrans,
O advectiveFluxWU,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 advectiveFluxWU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
IF ( k.EQ.Nr+1 .AND.
& useRealFreshWaterFlux .AND. usingPCoords ) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWU(i,j) = rTrans(i,j)*uFld(i,j,k-1,bi,bj)
ENDDO
ENDDO
ELSEIF ( k.GT.Nr .OR. (k.EQ.1.AND.rigidLid) ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
advectiveFluxWU(i,j) = 0.
ENDDO
ENDDO
ELSEIF (k.EQ.1) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWU(i,j) = rTrans(i,j)*uFld(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWU(i,j) = rTrans(i,j)*
& 0.5d0*( uFld(i,j,k,bi,bj)+uFld(i,j,k-1,bi,bj) )
ENDDO
ENDDO
IF ( select_rStar.EQ.0 .AND. .NOT.rigidLid ) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWU(i,j) = advectiveFluxWU(i,j)
& +0.25*(
& wFld(i, j ,k,bi,bj)*rA(i, j ,bi,bj)*
& (maskC( i ,j,k,bi,bj)-maskC( i ,j,k-1,bi,bj))
& +wFld(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)*
& (maskC(i-1,j,k,bi,bj)-maskC(i-1,j,k-1,bi,bj))
& )*deepFac2F(k)*rhoFacF(k)
& *uFld(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_CORIOLIS(
I bi,bj,k,vFld,
U uCoriolisTerm,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 one
PARAMETER( one = 1.d0 )
IF (useEnergyConservingCoriolis) THEN
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx
uCoriolisTerm(i,j) =
& 0.5*( fCori( i ,j,bi,bj)
& *0.5*( vFld( i ,j)+vFld( i ,j+1) )
& + fCori(i-1,j,bi,bj)
& *0.5*( vFld(i-1,j)+vFld(i-1,j+1) ) )
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx
uCoriolisTerm(i,j) =
& 0.5*( fCori( i ,j,bi,bj) +
& fCori(i-1,j,bi,bj) )
& *0.25*(
& vFld( i ,j)+vFld( i ,j+1)
& +vFld(i-1,j)+vFld(i-1,j+1)
& )
ENDDO
ENDDO
ENDIF
IF (useJamartWetPoints) THEN
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx
uCoriolisTerm(i,j) = uCoriolisTerm(i,j)
& *4.d0/MAX( one,
& maskS( i , j ,k,bi,bj)+maskS( i ,j+1,k,bi,bj)
& +maskS(i-1, j ,k,bi,bj)+maskS(i-1,j+1,k,bi,bj) )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_DEL2U(
I bi,bj,k,
I uFld, hFacZ,
O del2u,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
Real*8 fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZClosedS,hFacZClosedN
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
fZon(i,j) = drF(k)*hFacC(i,j,k,bi,bj)
& *dyF(i,j,bi,bj)
& *recip_dxF(i,j,bi,bj)
& *(uFld(i+1,j)-uFld(i,j))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx-1
fMer(i,j) = drF(k)*hFacZ(i,j)
& *dxV(i,j,bi,bj)
& *recip_dyU(i,j,bi,bj)
& *(uFld(i,j)-uFld(i,j-1))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
del2u(i,j) =
& recip_drF(k)*recip_hFacW(i,j,k,bi,bj)
& *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k)
& *( fZon(i,j ) - fZon(i-1,j)
& +fMer(i,j+1) - fMer(i ,j)
& )*maskW(i,j,k,bi,bj)
ENDDO
ENDDO
IF (no_slip_sides) THEN
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
hFacZClosedS = hFacW(i,j,k,bi,bj) - hFacZ(i,j)
hFacZClosedN = hFacW(i,j,k,bi,bj) - hFacZ(i,j+1)
del2u(i,j) = del2u(i,j)
& -recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAw(i,j,bi,bj)*recip_deepFac2C(k)
& *( hFacZClosedS*dxV(i, j ,bi,bj)
& *recip_dyU(i, j ,bi,bj)
& +hFacZClosedN*dxV(i,j+1,bi,bj)
& *recip_dyU(i,j+1,bi,bj)
& )*drF(k)*2.*uFld(i,j)
& *maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_METRIC_CYLINDER(
I bi,bj,k,
I uFld, vFld,
O uMetricTerms,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uMetricTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 radius
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx
radius = (yG(i,j,bi,bj)+yG(i,j+1,bi,bj))*0.5d0
IF ( radius.GT.0. ) THEN
uMetricTerms(i,j) =
& uFld(i,j)
& *0.25*(vFld(i,j) + vFld(i-1,j) +
& vFld(i,j+1)+vFld(i-1,j+1))/radius
ELSE
uMetricTerms(i,j) = 0.
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_METRIC_SPHERE(
I bi,bj,k,
I uFld, vFld,
O uMetricTerms,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 uMetricTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Olx,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx
uMetricTerms(i,j) =
& uFld(i,j)*recip_rSphere*recip_deepFacC(k)
& *0.25*( vFld(i,j )+vFld(i-1,j )
& +vFld(i,j+1)+vFld(i-1,j+1)
& )*tanPhiAtU(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_XVISCFLUX(
I bi,bj,k,
I uFld, del2u,
O xViscFluxU,
I viscAh_D,viscA4_D,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 xViscFluxU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
xViscFluxU(i,j) =
& dyF(i,j,bi,bj)*drF(k)*hFacC(i,j,k,bi,bj)
& *(
& -viscAh_D(i,j)*( uFld(i+1,j)-uFld(i,j) )
& *cosFacU(J,bi,bj)
& +viscA4_D(i,j)*(del2u(i+1,j)-del2u(i,j))
& *cosFacU(J,bi,bj)
& )*recip_dxF(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_U_YVISCFLUX(
I bi,bj,k,
I uFld, del2u, hFacZ,
O yViscFluxU,
I viscAh_Z,viscA4_Z,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 yViscFluxU(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
yViscFluxU(i,j) =
& dxV(i,j,bi,bj)*drF(k)*hFacZ(i,j)
& *(
& -viscAh_Z(i,j)*( uFld(i,j)-uFld(i,j-1) )
& +viscA4_Z(i,j)*(del2u(i,j)-del2u(i,j-1))
& )*recip_dyU(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_ADV_UV(
I bi,bj,k,
I uTrans, vFld,
O AdvectFluxUV,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 AdvectFluxUV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
AdvectFluxUV(i,j) =
& 0.25*( uTrans(i,j) + uTrans(i,j-1) )
& *( vFld(i,j) + vFld(i-1,j) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_ADV_VV(
I bi,bj,k,
I vTrans, vFld,
O AdvectFluxVV,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 AdvectFluxVV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
AdvectFluxVV(i,j) =
& 0.25*( vTrans(i,j) + vTrans(i,j+1) )
& *( vFld(i,j) + vFld(i,j+1) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_ADV_WV(
I bi,bj,k,
I vFld,wFld,rTrans,
O advectiveFluxWV,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 advectiveFluxWV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
IF ( k.EQ.Nr+1 .AND.
& useRealFreshWaterFlux .AND. usingPCoords ) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWV(i,j) = rTrans(i,j)*vFld(i,j,k-1,bi,bj)
ENDDO
ENDDO
ELSEIF ( k.GT.Nr .OR. (k.EQ.1.AND.rigidLid) ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
advectiveFluxWV(i,j) = 0.
ENDDO
ENDDO
ELSEIF (k.EQ.1) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWV(i,j) = rTrans(i,j)*vFld(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWV(i,j) = rTrans(i,j)*
& 0.5d0*( vFld(i,j,k,bi,bj)+vFld(i,j,k-1,bi,bj) )
ENDDO
ENDDO
IF ( select_rStar.EQ.0 .AND. .NOT.rigidLid ) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx+1,sNx+Olx
advectiveFluxWV(i,j) = advectiveFluxWV(i,j)
& +0.25*(
& wFld(i, j ,k,bi,bj)*rA(i, j ,bi,bj)*
& (maskC(i, j ,k,bi,bj)-maskC(i, j ,k-1,bi,bj))
& +wFld(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)*
& (maskC(i,j-1,k,bi,bj)-maskC(i,j-1,k-1,bi,bj))
& )*deepFac2F(k)*rhoFacF(k)
& *vFld(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_CORIOLIS(
I bi,bj,k,uFld,
U vCoriolisTerm,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 one
PARAMETER( one = 1.d0 )
IF (useEnergyConservingCoriolis) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx-1
vCoriolisTerm(i,j) =
& -0.5*( fCori(i, j ,bi,bj)
& *0.5*( uFld( i , j )+uFld(i+1, j ) )
& + fCori(i,j-1,bi,bj)
& *0.5*( uFld( i ,j-1)+uFld(i+1,j-1) ) )
ENDDO
ENDDO
ELSE
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx-1
vCoriolisTerm(i,j) =
& -0.5*(fCori(i, j ,bi,bj)+fCori(i,j-1,bi,bj))
& *0.25*( uFld(i, j )+uFld(i+1, j )
& +uFld(i,j-1)+uFld(i+1,j-1)
& )
ENDDO
ENDDO
ENDIF
IF (useJamartWetPoints) THEN
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx-1
vCoriolisTerm(i,j) = vCoriolisTerm(i,j)
& *4.d0/MAX( one,
& maskW( i , j ,k,bi,bj)+maskW(i+1, j ,k,bi,bj)
& +maskW( i ,j-1,k,bi,bj)+maskW(i+1,j-1,k,bi,bj) )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_DEL2V(
I bi,bj,k,
I vFld, hFacZ,
O del2v,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
Real*8 fZon(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fMer(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZClosedE,hFacZClosedW
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx
fZon(i,j) = drF(k)*hFacZ(i,j)
& *dyU(i,j,bi,bj)
& *recip_dxV(i,j,bi,bj)
& *(vFld(i,j)-vFld(i-1,j))
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
fMer(i,j) = drF(k)*hFacC(i,j,k,bi,bj)
& *dxF(i,j,bi,bj)
& *recip_dyF(i,j,bi,bj)
& *(vFld(i,j+1)-vFld(i,j))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
del2v(i,j) =
& recip_drF(k)*recip_hFacS(i,j,k,bi,bj)
& *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
& *( fZon(i+1,j) - fZon(i, j )
& +fMer( i ,j) - fMer(i,j-1)
& )*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
IF (no_slip_sides) THEN
DO j=1-Oly+1,sNy+Oly-1
DO i=1-Olx+1,sNx+Olx-1
hFacZClosedW = hFacS(i,j,k,bi,bj) - hFacZ(i,j)
hFacZClosedE = hFacS(i,j,k,bi,bj) - hFacZ(i+1,j)
del2v(i,j) = del2v(i,j)
& -recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAs(i,j,bi,bj)*recip_deepFac2C(k)
& *( hFacZClosedW*dyU( i ,j,bi,bj)
& *recip_dxV( i ,j,bi,bj)
& +hFacZClosedE*dyU(i+1,j,bi,bj)
& *recip_dxV(i+1,j,bi,bj)
& )*drF(k)*2.*vFld(i,j)
& *maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_METRIC_CYLINDER(
I bi,bj,k,
I uFld, vFld,
O vMetricTerms,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vMetricTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
Real*8 radius
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx-1
radius = (yG(i,j,bi,bj)+yG(i+1,j,bi,bj))*0.5d0
IF ( radius.GT.0. ) THEN
vMetricTerms(i,j) =
& -0.25*(uFld(i,j) + uFld(i+1,j) +
& uFld(i,j-1)+uFld(i+1,j-1))
& *0.25*(uFld(i,j) + uFld(i+1,j) +
& uFld(i,j-1)+uFld(i+1,j-1))/radius
ELSE
vMetricTerms(i,j) = 0.
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_METRIC_SPHERE(
I bi,bj,k,
I uFld,
O vMetricTerms,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 vMetricTerms(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j
DO j=1-Olx+1,sNy+Oly
DO i=1-Olx,sNx+Olx-1
vMetricTerms(i,j) = -recip_rSphere*recip_deepFacC(k)
& *0.25*( uFld(i,j )+uFld(i+1,j )
& +uFld(i,j-1)+uFld(i+1,j-1)
& )
& *0.25*( uFld(i,j )+uFld(i+1,j )
& +uFld(i,j-1)+uFld(i+1,j-1)
& )
& *tanPhiAtV(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_XVISCFLUX(
I bi,bj,k,
I vFld, del2v, hFacZ,
O xViscFluxV,
I viscAh_Z,viscA4_Z,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 xViscFluxV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx
xViscFluxV(i,j) =
& dyU(i,j,bi,bj)*drF(k)*hFacZ(i,j)
& *(
& -viscAh_Z(i,j)*( vFld(i,j)-vFld(i-1,j) )
& *cosFacV(J,bi,bj)
& +viscA4_Z(i,j)*(del2v(i,j)-del2v(i-1,j))
& *cosFacV(J,bi,bj)
& )*recip_dxV(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_V_YVISCFLUX(
I bi,bj,k,
I vFld, del2v,
O yViscFluxV,
I viscAh_D,viscA4_D,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
Real*8 yViscFluxV(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER I,J
DO j=1-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
yViscFluxV(i,j) =
& dxF(i,j,bi,bj)*drF(k)*hFacC(i,j,k,bi,bj)
& *(
& -viscAh_D(i,j)*( vFld(i,j+1)-vFld(i,j) )
& +viscA4_D(i,j)*(del2v(i,j+1)-del2v(i,j))
& )*recip_dyF(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VECINV(
I bi,bj,iMin,iMax,jMin,jMax,k,kUp,kDown,
I KappaRU, KappaRV,
U fVerU, fVerV,
O guDiss, gvDiss,
I myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
Real*8 KappaRU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 KappaRV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 fVerU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 fVerV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 guDiss(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 gvDiss(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER kUp,kDown
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER bi,bj,iMin,iMax,jMin,jMax
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL DIFFERENT_MULTIPLE
Real*8 vF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vrF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vCf(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2u (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2v (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dStar (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 zStar (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tension (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 strain (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KE (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 omega3 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vort3 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hDiv (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER i,j,k
Real*8 ArDudrFac
Real*8 ArDvdrFac
Real*8 sideMaskFac
LOGICAL bottomDragTerms
LOGICAL writeDiag
LOGICAL harmonic,biharmonic,useVariableViscosity
INTEGER imomkey
fVerU(1,1,kUp) = fVerU(1,1,kUp)
fVerV(1,1,kUp) = fVerV(1,1,kUp)
act0 = k - 1
max0 = Nr
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
imomkey = (act0 + 1)
& + act1*max0
& + act2*max0*max1
& + act3*max0*max1*max2
& + act4*max0*max1*max2*max3
writeDiag = DIFFERENT_MULTIPLE(diagFreq, myTime, deltaTClock)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
vF(i,j) = 0.
vrF(i,j) = 0.
uCf(i,j) = 0.
vCf(i,j) = 0.
del2u(i,j) = 0.
del2v(i,j) = 0.
dStar(i,j) = 0.
zStar(i,j) = 0.
guDiss(i,j)= 0.
gvDiss(i,j)= 0.
vort3(i,j) = 0.
omega3(i,j)= 0.
KE(i,j) = 0.
hDiv(i,j) = 0.
viscAh_Z(i,j) = 0.
viscAh_D(i,j) = 0.
viscA4_Z(i,j) = 0.
viscA4_D(i,j) = 0.
strain(i,j) = 0.d0
tension(i,j) = 0.d0
hFacZ(i,j) = 0.d0
ENDDO
ENDDO
ArDudrFac = vfFacMom*1.
ArDvdrFac = vfFacMom*1.
IF ( no_slip_sides ) THEN
sideMaskFac = sideDragFactor
ELSE
sideMaskFac = 0.d0
ENDIF
IF ( no_slip_bottom
& .OR. bottomDragQuadratic.NE.0.
& .OR. bottomDragLinear.NE.0.) THEN
bottomDragTerms=.TRUE.
ELSE
bottomDragTerms=.FALSE.
ENDIF
CALL MOM_CALC_HFACZ(bi,bj,k,hFacZ,r_hFacZ,myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
uFld(i,j) = uVel(i,j,k,bi,bj)
vFld(i,j) = vVel(i,j,k,bi,bj)
ENDDO
ENDDO
CALL MOM_CALC_KE(bi,bj,k,selectKEscheme,uFld,vFld,KE,myThid)
CALL MOM_CALC_RELVORT3(bi,bj,k,uFld,vFld,hFacZ,vort3,myThid)
IF (momViscosity) THEN
CADJ STORE vort3(:,:) =
CADJ & comlev1_bibj_k, key = imomkey, byte = isbyte
CALL MOM_CALC_HDIV(bi,bj,k,2,uFld,vFld,hDiv,myThid)
CALL MOM_CALC_TENSION(bi,bj,k,uFld,vFld,tension,myThid)
CALL MOM_CALC_STRAIN(bi,bj,k,uFld,vFld,hFacZ,strain,myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( hFacZ(i,j).EQ.0. ) THEN
vort3(i,j) = sideMaskFac*vort3(i,j)
strain(i,j) = sideMaskFac*strain(i,j)
ENDIF
ENDDO
ENDDO
CALL MOM_CALC_VISC(
I bi,bj,k,
O viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
O harmonic,biharmonic,useVariableViscosity,
I hDiv,vort3,tension,strain,KE,hfacZ,
I myThid)
IF (biharmonic) THEN
CALL MOM_VI_DEL2UV(bi,bj,k,hDiv,vort3,hFacZ,
O del2u,del2v,
& myThid)
CALL MOM_CALC_HDIV(bi,bj,k,2,del2u,del2v,dStar,myThid)
CALL MOM_CALC_RELVORT3(bi,bj,k,
& del2u,del2v,hFacZ,zStar,myThid)
ENDIF
IF ( writeDiag ) THEN
IF (snapshot_mdsio) THEN
CALL WRITE_LOCAL_RL('Ds','I10',1,strain,bi,bj,k,myIter,myThid)
ENDIF
ENDIF
IF (useStrainTensionVisc) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( hFacZ(i,j).EQ.0. ) strain(i,j) = 0.d0
ENDDO
ENDDO
CALL MOM_HDISSIP(bi,bj,k,hDiv,vort3,tension,strain,KE,
I hFacZ,
I viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
I harmonic,biharmonic,useVariableViscosity,
O guDiss,gvDiss,
I myThid)
ELSE
CALL MOM_VI_HDISSIP(bi,bj,k,hDiv,vort3,tension,strain,KE,
I hFacZ,dStar,zStar,
I viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
I harmonic,biharmonic,useVariableViscosity,
O guDiss,gvDiss,
& myThid)
ENDIF
ENDIF
IF (momViscosity.AND..NOT.implicitViscosity) THEN
CALL MOM_U_RVISCFLUX(bi,bj,k+1,uVel,KappaRU,vrF,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
fVerU(i,j,kDown) = ArDudrFac*vrF(i,j)
ENDDO
ENDDO
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
guDiss(i,j) = guDiss(i,j)
& -recip_hFacW(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAw(i,j,bi,bj)
& *(
& fVerU(i,j,kDown) - fVerU(i,j,kUp)
& )*rkSign
ENDDO
ENDDO
ENDIF
IF (momViscosity.AND.no_slip_sides) THEN
CALL MOM_U_SIDEDRAG(
I bi,bj,k,
I uFld, del2u, hFacZ,
I viscAh_Z,viscA4_Z,
I harmonic,biharmonic,useVariableViscosity,
O vF,
I myThid)
DO j=jMin,jMax
DO i=iMin,iMax
guDiss(i,j) = guDiss(i,j)+vF(i,j)
ENDDO
ENDDO
ENDIF
IF (momViscosity.AND.bottomDragTerms) THEN
CALL MOM_U_BOTTOMDRAG(bi,bj,k,uFld,KE,KappaRU,vF,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
guDiss(i,j) = guDiss(i,j)+vF(i,j)
ENDDO
ENDDO
ENDIF
IF (momViscosity.AND..NOT.implicitViscosity) THEN
CALL MOM_V_RVISCFLUX(bi,bj,k+1,vVel,KappaRV,vrF,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
fVerV(i,j,kDown) = ArDvdrFac*vrF(i,j)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
gvDiss(i,j) = gvDiss(i,j)
& -recip_hFacS(i,j,k,bi,bj)*recip_drF(k)
& *recip_rAs(i,j,bi,bj)
& *(
& fVerV(i,j,kDown) - fVerV(i,j,kUp)
& )*rkSign
ENDDO
ENDDO
ENDIF
IF (momViscosity.AND.no_slip_sides) THEN
CALL MOM_V_SIDEDRAG(
I bi,bj,k,
I vFld, del2v, hFacZ,
I viscAh_Z,viscA4_Z,
I harmonic,biharmonic,useVariableViscosity,
O vF,
I myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gvDiss(i,j) = gvDiss(i,j)+vF(i,j)
ENDDO
ENDDO
ENDIF
IF (momViscosity.AND.bottomDragTerms) THEN
CALL MOM_V_BOTTOMDRAG(bi,bj,k,vFld,KE,KappaRV,vF,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gvDiss(i,j) = gvDiss(i,j)+vF(i,j)
ENDDO
ENDDO
ENDIF
IF ( writeDiag ) THEN
IF (snapshot_mdsio) THEN
CALL WRITE_LOCAL_RL('Z3','I10',1,vort3, bi,bj,k,myIter,myThid)
ENDIF
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( hFacZ(i,j).EQ.0. ) vort3(i,j) = 0.
ENDDO
ENDDO
IF (useAbsVorticity)
& CALL MOM_CALC_ABSVORT3(bi,bj,k,vort3,omega3,myThid)
IF ( useCoriolis .AND.
& .NOT.( useCDscheme .OR. useAbsVorticity.AND.momAdvection )
& ) THEN
IF (useAbsVorticity) THEN
CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,hFacZ,r_hFacZ,
& uCf,myThid)
CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,hFacZ,r_hFacZ,
& vCf,myThid)
ELSE
CALL MOM_VI_CORIOLIS(bi,bj,k,uFld,vFld,hFacZ,r_hFacZ,
& uCf,vCf,myThid)
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = uCf(i,j)
gV(i,j,k,bi,bj) = vCf(i,j)
ENDDO
ENDDO
IF ( writeDiag ) THEN
IF (snapshot_mdsio) THEN
CALL WRITE_LOCAL_RL('fV','I10',1,uCf,bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('fU','I10',1,vCf,bi,bj,k,myIter,myThid)
ENDIF
ENDIF
ELSE
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = 0.d0
gV(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDIF
IF (momAdvection) THEN
IF ( (highOrderVorticity.OR.upwindVorticity)
& .AND.useAbsVorticity ) THEN
CALL MOM_VI_U_CORIOLIS_C4(bi,bj,k,vFld,omega3,r_hFacZ,
& uCf,myThid)
ELSEIF ( (highOrderVorticity.OR.upwindVorticity) ) THEN
CALL MOM_VI_U_CORIOLIS_C4(bi,bj,k,vFld,vort3, r_hFacZ,
& uCf,myThid)
ELSEIF ( useAbsVorticity ) THEN
CALL MOM_VI_U_CORIOLIS(bi,bj,K,vFld,omega3,hFacZ,r_hFacZ,
& uCf,myThid)
ELSE
CALL MOM_VI_U_CORIOLIS(bi,bj,k,vFld,vort3, hFacZ,r_hFacZ,
& uCf,myThid)
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
ENDDO
ENDDO
IF ( (highOrderVorticity.OR.upwindVorticity)
& .AND.useAbsVorticity ) THEN
CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,omega3,r_hFacZ,
& vCf,myThid)
ELSEIF ( (highOrderVorticity.OR.upwindVorticity) ) THEN
CALL MOM_VI_V_CORIOLIS_C4(bi,bj,K,uFld,vort3, r_hFacZ,
& vCf,myThid)
ELSEIF ( useAbsVorticity ) THEN
CALL MOM_VI_V_CORIOLIS(bi,bj,K,uFld,omega3,hFacZ,r_hFacZ,
& vCf,myThid)
ELSE
CALL MOM_VI_V_CORIOLIS(bi,bj,k,uFld,vort3, hFacZ,r_hFacZ,
& vCf,myThid)
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
ENDDO
ENDDO
IF ( writeDiag ) THEN
IF (snapshot_mdsio) THEN
CALL WRITE_LOCAL_RL('zV','I10',1,uCf,bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('zU','I10',1,vCf,bi,bj,k,myIter,myThid)
ENDIF
ENDIF
IF (taveFreq.GT.0.) THEN
CALL TIMEAVE_CUMUL_1K1T(uZetatave,vCf,deltaTClock,
& Nr, k, bi, bj, myThid)
CALL TIMEAVE_CUMUL_1K1T(vZetatave,uCf,deltaTClock,
& Nr, k, bi, bj, myThid)
ENDIF
IF ( .NOT. momImplVertAdv ) THEN
CALL MOM_VI_U_VERTSHEAR(bi,bj,K,uVel,wVel,uCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
ENDDO
ENDDO
CALL MOM_VI_V_VERTSHEAR(bi,bj,K,vVel,wVel,vCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
ENDDO
ENDDO
ENDIF
CALL MOM_VI_U_GRAD_KE(bi,bj,K,KE,uCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
ENDDO
ENDDO
CALL MOM_VI_V_GRAD_KE(bi,bj,K,KE,vCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
ENDDO
ENDDO
IF ( writeDiag ) THEN
IF (snapshot_mdsio) THEN
CALL WRITE_LOCAL_RL('KEx','I10',1,uCf,bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('KEy','I10',1,vCf,bi,bj,k,myIter,myThid)
ENDIF
ENDIF
ENDIF
IF ( use3dCoriolis ) THEN
CALL MOM_U_CORIOLIS_NH(bi,bj,k,wVel,uCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
ENDDO
ENDDO
IF ( usingCurvilinearGrid ) THEN
CALL MOM_V_CORIOLIS_NH(bi,bj,k,wVel,vCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
ENDDO
ENDDO
ENDIF
ENDIF
IF ( useNHMTerms ) THEN
CALL MOM_U_METRIC_NH(bi,bj,k,uFld,wVel,uCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)+uCf(i,j)
ENDDO
ENDDO
CALL MOM_V_METRIC_NH(bi,bj,k,vFld,wVel,vCf,myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)+vCf(i,j)
ENDDO
ENDDO
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj)*maskW(i,j,k,bi,bj)
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj)*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
IF ( debugLevel .GE. debLevB
& .AND. k.EQ.4 .AND. myIter.EQ.nIter0
& .AND. nPx.EQ.1 .AND. nPy.EQ.1
& .AND. useCubedSphereExchange ) THEN
CALL DEBUG_CS_CORNER_UV( ' uDiss,vDiss from MOM_VECINV',
& guDiss,gvDiss, k, standardMessageUnit,bi,bj,myThid )
ENDIF
IF ( writeDiag ) THEN
IF (snapshot_mdsio) THEN
CALL WRITE_LOCAL_RL('W3','I10',1,omega3, bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('KE','I10',1,KE, bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('D', 'I10',1,hDiv, bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('Dt','I10',1,tension,bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('Du','I10',1,guDiss, bi,bj,k,myIter,myThid)
CALL WRITE_LOCAL_RL('Dv','I10',1,gvDiss, bi,bj,k,myIter,myThid)
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_CORIOLIS(
I bi,bj,K,
I uFld,vFld,hFacZ,r_hFacZ,
O uCoriolisTerm,vCoriolisTerm,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,K
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I,J
Real*8 vBarXY,uBarXY
Real*8 epsil
epsil = 1.D-9
IF (useJamartWetPoints) THEN
DO J=1-Oly,sNy+Oly-1
DO I=2-Olx,sNx+Olx
vBarXY=(
& (vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj)
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj))
& +(vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj)
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj)))
& / MAX( epsil,(hFacS(i, j ,k,bi,bj)+hFacS(i-1, j ,k,bi,bj))
& +(hFacS(i,j+1,k,bi,bj)+hFacS(i-1,j+1,k,bi,bj)) )
uCoriolisTerm(i,j)=
& +0.5*( fCoriG(i,j,bi,bj)+fCoriG(i,j+1,bi,bj)
& )*vBarXY*recip_dxC(i,j,bi,bj)*maskW(I,J,K,bi,bj)
ENDDO
ENDDO
ELSE
DO J=1-Oly,sNy+Oly-1
DO I=2-Olx,sNx+Olx
vBarXY=0.25*(
& (vFld( i , j )*dxG( i , j ,bi,bj)
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj))
& +(vFld( i ,j+1)*dxG( i ,j+1,bi,bj)
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj))
& )
uCoriolisTerm(i,j)=
& +0.5*( fCoriG(i,j,bi,bj)+fCoriG(i,j+1,bi,bj)
& )*vBarXY*recip_dxC(i,j,bi,bj)*maskW(I,J,K,bi,bj)
ENDDO
ENDDO
ENDIF
IF (useJamartWetPoints) THEN
DO J=2-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx-1
uBarXY=(
& (uFld( i , j )*dyG( i , j ,bi,bj)*hFacW( i , j ,k,bi,bj)
& +uFld( i ,j-1)*dyG( i ,j-1,bi,bj)*hFacW( i ,j-1,k,bi,bj))
& +(uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacW(i+1, j ,k,bi,bj)
& +uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj)*hFacW(i+1,j-1,k,bi,bj)))
& / MAX( epsil,(hFacW( i ,j,k,bi,bj)+hFacW( i ,j-1,k,bi,bj))
& +(hFacW(i+1,j,k,bi,bj)+hFacW(i+1,j-1,k,bi,bj)) )
vCoriolisTerm(i,j)=
& -0.5*( fCoriG(i,j,bi,bj)+fCoriG(i+1,j,bi,bj)
& )*uBarXY*recip_dyC(i,j,bi,bj)*maskS(I,J,K,bi,bj)
ENDDO
ENDDO
ELSE
DO J=2-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx-1
uBarXY=0.25*(
& (uFld( i , j )*dyG( i , j ,bi,bj)
& +uFld( i ,j-1)*dyG( i ,j-1,bi,bj))
& +(uFld(i+1, j )*dyG(i+1, j ,bi,bj)
& +uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj))
& )
vCoriolisTerm(i,j)=
& -0.5*( fCoriG(i,j,bi,bj)+fCoriG(i+1,j,bi,bj)
& )*uBarXY*recip_dyC(i,j,bi,bj)*maskS(I,J,K,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_DEL2UV(
I bi,bj,k,
I hDiv,vort3,hFacZ,
O del2u,del2v,
I myThid)
IMPLICIT NONE
C
C
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER bi,bj,k
Real*8 hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2u(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 del2v(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
IF (useCubedSphereExchange) THEN
CALL FILL_CS_CORNER_TR_RL( 1, .FALSE.,
& hDiv, bi,bj, myThid )
ENDIF
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
del2u(i,j) =
& + ( hDiv(i,j) - hDiv(i-1,j) )*recip_DXC(i,j,bi,bj)
& -recip_hFacW(i,j,k,bi,bj)*
& ( hFacZ(i,j+1)*vort3(i,j+1) - hFacZ(i,j)*vort3(i,j) )
& *recip_DYG(i,j,bi,bj)
ENDDO
ENDDO
IF (useCubedSphereExchange) THEN
CALL FILL_CS_CORNER_TR_RL( 2, .FALSE.,
& hDiv, bi,bj, myThid )
ENDIF
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
del2v(i,j) =
& + ( hDiv(i,j) - hDiv(i,j-1) )*recip_DYC(i,j,bi,bj)
& +recip_hFacS(i,j,k,bi,bj)*
& ( hFacZ(i+1,j)*vort3(i+1,j) - hFacZ(i,j)*vort3(i,j) )
& *recip_DXG(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_HDISSIP(
I bi,bj,k,
I hDiv,vort3,tension,strain,KE,
I hFacZ,dStar,zStar,
I viscAh_Z,viscAh_D,viscA4_Z,viscA4_D,
I harmonic,biharmonic,useVariableViscosity,
O uDissip,vDissip,
I myThid)
IMPLICIT NONE
C
C
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
Real*8 hDiv(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vort3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tension(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 strain(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dStar(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 zStar(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscAh_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_Z(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 viscA4_D(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
LOGICAL harmonic, biharmonic, useVariableViscosity
INTEGER myThid
INTEGER I,J
Real*8 Zip,Zij,Zpj,Dim,Dij,Dmj,uD2,vD2,uD4,vD4
Real*8 Zip1,Zij1,Zpj1
IF (harmonic) THEN
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
IF (useVariableViscosity) THEN
Dij=hDiv( i , j )*viscAh_D(i,j)
Dim=hDiv( i ,j-1)*viscAh_D(i,j-1)
Dmj=hDiv(i-1, j )*viscAh_D(i-1,j)
Zij=hFacZ( i , j )*vort3( i , j )*viscAh_Z(i,j)
Zip=hFacZ( i ,j+1)*vort3( i ,j+1)*viscAh_Z(i,j+1)
Zpj=hFacZ(i+1, j )*vort3(i+1, j )*viscAh_Z(i+1,j)
uD2 = (
& cosFacU(j,bi,bj)*( Dij-Dmj )*recip_DXC(i,j,bi,bj)
& -recip_hFacW(i,j,k,bi,bj)*( Zip-Zij )*recip_DYG(i,j,bi,bj) )
vD2 = (
& recip_hFacS(i,j,k,bi,bj)*( Zpj-Zij )*recip_DXG(i,j,bi,bj)
& *cosFacV(j,bi,bj)
& +( Dij-Dim )*recip_DYC(i,j,bi,bj) )
ELSE
Dim=hDiv( i ,j-1)
Dij=hDiv( i , j )
Dmj=hDiv(i-1, j )
Zip=hFacZ( i ,j+1)*vort3( i ,j+1)
Zij=hFacZ( i , j )*vort3( i , j )
Zpj=hFacZ(i+1, j )*vort3(i+1, j )
uD2 = viscAhD*
& cosFacU(j,bi,bj)*( Dij-Dmj )*recip_DXC(i,j,bi,bj)
& - viscAhZ*recip_hFacW(i,j,k,bi,bj)*
& ( Zip-Zij )*recip_DYG(i,j,bi,bj)
vD2 = viscAhZ*recip_hFacS(i,j,k,bi,bj)*
& cosFacV(j,bi,bj)*( Zpj-Zij )*recip_DXG(i,j,bi,bj)
& + viscAhD* ( Dij-Dim )*recip_DYC(i,j,bi,bj)
ENDIF
uDissip(i,j) = uD2
vDissip(i,j) = vD2
ENDDO
ENDDO
ELSE
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
uDissip(i,j) = 0.
vDissip(i,j) = 0.
ENDDO
ENDDO
ENDIF
IF (biharmonic) THEN
DO j=2-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
Dim=dStar( i ,j-1)
Dij=dStar( i , j )
Dmj=dStar(i-1, j )
Zip1=hFacZ( i ,j+1)*zStar( i ,j+1)
Zij1=hFacZ( i , j )*zStar( i , j )
Zpj1=hFacZ(i+1, j )*zStar(i+1, j )
IF (useVariableViscosity) THEN
Dij=Dij*viscA4_D(i,j)
Dim=Dim*viscA4_D(i,j-1)
Dmj=Dmj*viscA4_D(i-1,j)
Zij=Zij1*viscA4_Z(i,j)
Zip=Zip1*viscA4_Z(i,j+1)
Zpj=Zpj1*viscA4_Z(i+1,j)
uD4 = (
& cosFacU(j,bi,bj)*( Dij-Dmj )*recip_DXC(i,j,bi,bj)
& -recip_hFacW(i,j,k,bi,bj)*( Zip-Zij )*recip_DYG(i,j,bi,bj) )
vD4 = (
& recip_hFacS(i,j,k,bi,bj)*( Zpj-Zij )*recip_DXG(i,j,bi,bj)
& *cosFacV(j,bi,bj)
& +( Dij-Dim )*recip_DYC(i,j,bi,bj) )
ELSE
Zij=Zij1
Zip=Zip1
Zpj=Zpj1
uD4 = viscA4D*
& cosFacU(j,bi,bj)*( Dij-Dmj )*recip_DXC(i,j,bi,bj)
& - viscA4Z*recip_hFacW(i,j,k,bi,bj)*
& ( Zip-Zij )*recip_DYG(i,j,bi,bj)
vD4 = viscA4Z*recip_hFacS(i,j,k,bi,bj)*
& cosFacV(j,bi,bj)*( Zpj-Zij )*recip_DXG(i,j,bi,bj)
& + viscA4D* ( Dij-Dim )*recip_DYC(i,j,bi,bj)
ENDIF
uDissip(i,j) = uDissip(i,j) - uD4
vDissip(i,j) = vDissip(i,j) - vD4
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_U_CORIOLIS(
I bi, bj, k,
I vFld, omega3, hFacZ, r_hFacZ,
O uCoriolisTerm,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi, bj, k
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 omega3 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
CHARACTER*(MAX_LEN_MBUF) msgBuf
LOGICAL upwindVort3
INTEGER i, j
Real*8 vBarXY, vBarXm, vBarXp
Real*8 vort3u
Real*8 vort3mj, vort3ij, vort3mp, vort3ip
Real*8 oneThird, tmpFac
Real*8 epsil
PARAMETER( upwindVort3 = .FALSE. )
epsil = 1.D-9
tmpFac = 1.d0
oneThird = 1.d0 / 3.d0
IF ( selectVortScheme.EQ.0 ) THEN
DO j=1-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx
vBarXY=0.25*(
& (vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj)
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj))
& +(vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj)
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj))
& )
IF (upwindVort3) THEN
IF (vBarXY.GT.0.) THEN
vort3u=omega3(i,j)*r_hFacZ(i,j)
ELSE
vort3u=omega3(i,j+1)*r_hFacZ(i,j+1)
ENDIF
ELSE
vort3u=0.5*(omega3(i,j)*r_hFacZ(i,j)
& +omega3(i,j+1)*r_hFacZ(i,j+1))
ENDIF
uCoriolisTerm(i,j)= +vort3u*vBarXY*recip_dxC(i,j,bi,bj)
& * maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.1 ) THEN
DO j=1-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx
vBarXY= 0.5*(
& (vFld( i , j )*dxG( i , j ,bi,bj)*hFacZ(i, j )
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacZ(i, j ))
& +(vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacZ(i,j+1)
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacZ(i,j+1))
& )/MAX( epsil, hFacZ(i,j)+hFacZ(i,j+1) )
IF (upwindVort3) THEN
IF (vBarXY.GT.0.) THEN
vort3u=omega3(i,j)
ELSE
vort3u=omega3(i,j+1)
ENDIF
ELSE
vort3u=0.5*(omega3(i,j)+omega3(i,j+1))
ENDIF
uCoriolisTerm(i,j)= +vort3u*vBarXY*recip_dxC(i,j,bi,bj)
& * maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.2 ) THEN
DO j=1-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx
vBarXm=0.5*(
& vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj)
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj) )
vBarXp=0.5*(
& vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj)
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj) )
IF (upwindVort3) THEN
IF ( (vBarXm+vBarXp) .GT.0.) THEN
vort3u=vBarXm*r_hFacZ(i, j )*omega3(i, j )
ELSE
vort3u=vBarXp*r_hFacZ(i,j+1)*omega3(i,j+1)
ENDIF
ELSE
vort3u = ( vBarXm*r_hFacZ(i, j )*omega3(i, j )
& +vBarXp*r_hFacZ(i,j+1)*omega3(i,j+1)
& )*0.5d0
ENDIF
uCoriolisTerm(i,j)= +vort3u*recip_dxC(i,j,bi,bj)
& * maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.3 ) THEN
DO j=1-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
vort3mj= ( r_hFacZ(i, j )*omega3(i, j )
& +(r_hFacZ(i,j+1)*omega3(i,j+1)
& +r_hFacZ(i-1,j)*omega3(i-1,j)
& ))*oneThird
& *vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj)
vort3ij= ( r_hFacZ(i, j )*omega3(i, j )
& +(r_hFacZ(i,j+1)*omega3(i,j+1)
& +r_hFacZ(i+1,j)*omega3(i+1,j)
& ))*oneThird
& *vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj)
vort3mp= ( r_hFacZ(i,j+1)*omega3(i,j+1)
& +(r_hFacZ(i, j )*omega3(i, j )
& +r_hFacZ(i-1,j+1)*omega3(i-1,j+1)
& ))*oneThird
& *vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj)
vort3ip= ( r_hFacZ(i,j+1)*omega3(i,j+1)
& +(r_hFacZ(i, j )*omega3(i, j )
& +r_hFacZ(i+1,j+1)*omega3(i+1,j+1)
& ))*oneThird
& *vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj)
uCoriolisTerm(i,j)= +( (vort3mj+vort3ij)+(vort3mp+vort3ip) )
& *0.25d0 *recip_dxC(i,j,bi,bj)
& * maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
WRITE(msgBuf,'(A,I5,A)')
& 'MOM_VI_U_CORIOLIS: selectVortScheme=', selectVortScheme,
& ' not implemented'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R MOM_VI_U_CORIOLIS'
ENDIF
IF ( useJamartMomAdv ) THEN
DO j=1-Oly,sNy+Oly-1
DO i=2-Olx,sNx+Olx-1
uCoriolisTerm(i,j) = uCoriolisTerm(i,j)
& * 4.d0 * hFacW(i,j,k,bi,bj)
& / MAX( epsil,
& (hFacS(i, j ,k,bi,bj)+hFacS(i-1, j ,k,bi,bj))
& +(hFacS(i,j+1,k,bi,bj)+hFacS(i-1,j+1,k,bi,bj))
& )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_U_CORIOLIS_C4(
I bi,bj,k,
I vFld,omega3,r_hFacZ,
O uCoriolisTerm,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 omega3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER i,j
Real*8 vort3r(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vBarXY,vort3u,Rjp,Rjm
Real*8 vBarXm,vBarXp
LOGICAL northWestCorner, northEastCorner,
& southWestCorner, southEastCorner
INTEGER myFace
Real*8 oneSixth, oneTwelve
LOGICAL fourthVort3
PARAMETER(oneSixth=1.d0/6.d0 , oneTwelve=1.d0/12.d0)
PARAMETER(fourthVort3=.TRUE. )
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
vort3r(i,j) = r_hFacZ(i,j)*omega3(i,j)
ENDDO
ENDDO
IF ( useCubedSphereExchange.AND.highOrderVorticity ) THEN
myFace = bi
southWestCorner = .TRUE.
southEastCorner = .TRUE.
northWestCorner = .TRUE.
northEastCorner = .TRUE.
IF ( southWestCorner ) THEN
i = 1
j = 1
vort3r(i,j-1) = ( vort3r(i,j-1) + vort3r(i+1,j) )*0.5d0
ENDIF
IF ( southEastCorner ) THEN
i = sNx+1
j = 1
vort3r(i,j-1) = ( vort3r(i,j-1) + vort3r(i-1,j) )*0.5d0
ENDIF
IF ( northWestCorner ) THEN
i = 1
j = sNy+1
vort3r(i,j+1) = ( vort3r(i,j+1) + vort3r(i+1,j) )*0.5d0
ENDIF
IF ( northEastCorner ) THEN
i = sNx+1
j = sNy+1
vort3r(i,j+1) = ( vort3r(i,j+1) + vort3r(i-1,j) )*0.5d0
ENDIF
ENDIF
IF ( selectVortScheme.EQ.0 ) THEN
DO j=1,sNy
DO i=1,sNx+1
vBarXY=0.25*(
& (vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj)
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj))
& +(vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj)
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj))
& )
IF (upwindVorticity) THEN
IF (vBarXY.GT.0.) THEN
vort3u=vort3r(i,j)
ELSE
vort3u=vort3r(i,j+1)
ENDIF
ELSEIF (fourthVort3) THEN
Rjp = vort3r(i,j+2) - vort3r(i,j+1)
Rjm = vort3r(i, j ) - vort3r(i,j-1)
vort3u=0.5*( vort3r(i,j) + vort3r(i,j+1)
& -oneTwelve*(Rjp-Rjm)
& )
ELSE
vort3u=0.5*( vort3r(i,j) + vort3r(i,j+1) )
ENDIF
uCoriolisTerm(i,j) = vort3u*vBarXY*recip_dxC(i,j,bi,bj)
& * maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.2 ) THEN
DO j=1,sNy
DO i=1,sNx+1
vBarXm=0.5*(
& vFld( i , j )*dxG( i , j ,bi,bj)*hFacS( i , j ,k,bi,bj)
& +vFld(i-1, j )*dxG(i-1, j ,bi,bj)*hFacS(i-1, j ,k,bi,bj) )
vBarXp=0.5*(
& vFld( i ,j+1)*dxG( i ,j+1,bi,bj)*hFacS( i ,j+1,k,bi,bj)
& +vFld(i-1,j+1)*dxG(i-1,j+1,bi,bj)*hFacS(i-1,j+1,k,bi,bj) )
IF (upwindVorticity) THEN
IF ( (vBarXm+vBarXp) .GT.0.) THEN
vort3u=vBarXm*vort3r(i, j )
ELSE
vort3u=vBarXp*vort3r(i,j+1)
ENDIF
ELSEIF (fourthVort3) THEN
Rjp = vort3r(i,j+1) -oneSixth*( vort3r(i,j+2)-vort3r(i, j ) )
Rjm = vort3r(i, j ) +oneSixth*( vort3r(i,j+1)-vort3r(i,j-1) )
vort3u=0.5*( vBarXm*Rjm + vBarXp*Rjp )
ELSE
vort3u=0.5*( vBarXm*vort3r(i, j ) + vBarXp*vort3r(i,j+1) )
ENDIF
uCoriolisTerm(i,j) = vort3u*recip_dxC(i,j,bi,bj)
& * maskW(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
WRITE(msgBuf,'(A,I5,A)')
& 'MOM_VI_U_CORIOLIS_C4: selectVortScheme=', selectVortScheme,
& ' not implemented'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R MOM_VI_U_CORIOLIS_C4'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_U_GRAD_KE(
I bi,bj,K,
I KE,
O dKEdx,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,K
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dKEdx(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I,J
DO J=1-Oly,sNy+Oly
DO I=2-Olx,sNx+Olx
dKEdx(I,J)=-recip_dxC(i,j,bi,bj)*(KE(i,j)-KE(i-1,j))
& *maskW(i,j,k,BI,BJ)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_U_VERTSHEAR(
I bi,bj,K,
I uFld,wFld,
U uShearTerm,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,K
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uShearTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I,J,Kp1,Km1
Real*8 mask_Kp1,mask_Km1,wBarXm,wBarXp
Real*8 uZm,uZp
LOGICAL rAdvAreaWeight
c1 Real*8 wBarXZ,uZbarZ
rAdvAreaWeight =.TRUE.
IF ( selectKEscheme.EQ.1 .OR. selectKEscheme.EQ.3 )
& rAdvAreaWeight =.FALSE.
Kp1=min(K+1,Nr)
mask_Kp1=1.
IF (K.EQ.Nr) mask_Kp1=0.
Km1=max(K-1,1)
mask_Km1=1.
IF (K.EQ.1) mask_Km1=0.
DO J=1-Oly,sNy+Oly
DO I=2-Olx,sNx+Olx
IF ( rAdvAreaWeight ) THEN
wBarXm=0.5*(
& wFld(I,J,K,bi,bj)*rA(i,j,bi,bj)*maskC(I,J,Km1,bi,bj)
& +wFld(I-1,J,K,bi,bj)*rA(i-1,j,bi,bj)*maskC(I-1,J,Km1,bi,bj)
& )*mask_Km1
& *recip_rAw(i,j,bi,bj)
wBarXp=0.5*(
& wFld(I,J,Kp1,bi,bj)*rA(i,j,bi,bj)
& +wFld(I-1,J,Kp1,bi,bj)*rA(i-1,j,bi,bj)
& )*mask_Kp1
& *recip_rAw(i,j,bi,bj)
ELSE
wBarXm=0.5*(
& wFld(I,J,K,bi,bj)*maskC(I,J,Km1,bi,bj)
& +wFld(I-1,J,K,bi,bj)*maskC(I-1,J,Km1,bi,bj)
& )*mask_Km1
wBarXp=0.5*(
& wFld(I,J,Kp1,bi,bj)
& +wFld(I-1,J,Kp1,bi,bj)
& )*mask_Kp1
ENDIF
uZm=(uFld(I,J,K,bi,bj)-mask_Km1*uFld(I,J,Km1,bi,bj))*rkSign
c2 & *recip_dRC(K)
uZp=(mask_Kp1*uFld(I,J,Kp1,bi,bj)-uFld(I,J,K,bi,bj))*rkSign
c2 & *recip_dRC(Kp1)
c1 IF (upwindShear) THEN
c1 wBarXZ=0.5*( wBarXm + wBarXp )
c1 IF (wBarXZ.GT.0.) THEN
c1 uZbarZ=uZp
c1 ELSE
c1 uZbarZ=uZm
c1 ENDIF
c1 ELSE
c1 uZbarZ=0.5*(uZm+uZp)
c1 ENDIF
c1 uShearTerm(I,J)=-wBarXZ*uZbarZ*maskW(I,J,K,bi,bj)
c2 uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)
c2 & *maskW(I,J,K,bi,bj)
IF (upwindShear) THEN
uShearTerm(I,J)=-0.5*
& ( (wBarXp*uZp+wBarXm*uZm)
& +(ABS(wBarXp)*uZp-ABS(wBarXm)*uZm)
& )*recip_hFacW(i,j,k,bi,bj)
& * recip_drF(K)
c3 & * recip_rAw(i,j,bi,bj)
ELSE
uShearTerm(I,J)=-0.5*(wBarXp*uZp+wBarXm*uZm)
& *recip_hFacW(i,j,k,bi,bj)
& * recip_drF(K)
c3 & * recip_rAw(i,j,bi,bj)
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_V_CORIOLIS(
I bi, bj, k,
I uFld, omega3, hFacZ, r_hFacZ,
O vCoriolisTerm,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi, bj, k
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 omega3 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
CHARACTER*(MAX_LEN_MBUF) msgBuf
LOGICAL upwindVort3
INTEGER i, j
Real*8 uBarXY, uBarYm, uBarYp
Real*8 vort3v
Real*8 vort3im, vort3ij, vort3pm, vort3pj
Real*8 oneThird, tmpFac
Real*8 epsil
PARAMETER( upwindVort3 = .FALSE. )
epsil = 1.D-9
tmpFac = 1.d0
oneThird = 1.d0 / 3.d0
IF ( selectVortScheme.EQ.0 ) THEN
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx-1
uBarXY=0.25*(
& (uFld( i , j )*dyG( i , j ,bi,bj)*hFacW( i , j ,k,bi,bj)
& +uFld( i ,j-1)*dyG( i ,j-1,bi,bj)*hFacW( i ,j-1,k,bi,bj))
& +(uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacW(i+1, j ,k,bi,bj)
& +uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj)*hFacW(i+1,j-1,k,bi,bj))
& )
IF (upwindVort3) THEN
IF (uBarXY.GT.0.) THEN
vort3v=omega3(i,j)*r_hFacZ(i,j)
ELSE
vort3v=omega3(i+1,j)*r_hFacZ(i+1,j)
ENDIF
ELSE
vort3v=0.5*(omega3(i,j)*r_hFacZ(i,j)
& +omega3(i+1,j)*r_hFacZ(i+1,j))
ENDIF
vCoriolisTerm(i,j)= -vort3v*uBarXY*recip_dyC(i,j,bi,bj)
& * maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.1 ) THEN
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx-1
uBarXY= 0.5*(
& (uFld( i , j )*dyG( i , j ,bi,bj)*hFacZ( i ,j)
& +uFld( i ,j-1)*dyG( i ,j-1,bi,bj)*hFacZ( i ,j))
& +(uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacZ(i+1,j)
& +uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj)*hFacZ(i+1,j))
& )/MAX( epsil, hFacZ(i,j)+hFacZ(i+1,j) )
IF (upwindVort3) THEN
IF (uBarXY.GT.0.) THEN
vort3v=omega3(i,j)
ELSE
vort3v=omega3(i+1,j)
ENDIF
ELSE
vort3v=0.5*(omega3(i,j)+omega3(i+1,j))
ENDIF
vCoriolisTerm(i,j)= -vort3v*uBarXY*recip_dyC(i,j,bi,bj)
& * maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.2 ) THEN
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx-1
uBarYm=0.5*(
& uFld( i , j )*dyG( i , j ,bi,bj)*hFacW( i , j ,k,bi,bj)
& +uFld( i ,j-1)*dyG( i ,j-1,bi,bj)*hFacW( i ,j-1,k,bi,bj) )
uBarYp=0.5*(
& uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacW(i+1, j ,k,bi,bj)
& +uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj)*hFacW(i+1,j-1,k,bi,bj) )
IF (upwindVort3) THEN
IF ( (uBarYm+uBarYp) .GT.0.) THEN
vort3v=uBarYm*r_hFacZ( i ,j)*omega3( i ,j)
ELSE
vort3v=uBarYp*r_hFacZ(i+1,j)*omega3(i+1,j)
ENDIF
ELSE
vort3v = ( uBarYm*r_hFacZ( i ,j)*omega3( i ,j)
& +uBarYp*r_hFacZ(i+1,j)*omega3(i+1,j)
& )*0.5d0
ENDIF
vCoriolisTerm(i,j)= -vort3v*recip_dyC(i,j,bi,bj)
& * maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.3 ) THEN
DO j=2-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
vort3im= ( r_hFacZ(i, j )*omega3(i, j )
& +(r_hFacZ(i+1,j)*omega3(i+1,j)
& +r_hFacZ(i,j-1)*omega3(i,j-1)
& ))*oneThird
& *uFld( i ,j-1)*dyG( i ,j-1,bi,bj)*hFacW( i ,j-1,k,bi,bj)
vort3ij= ( r_hFacZ(i, j )*omega3(i, j )
& +(r_hFacZ(i+1,j)*omega3(i+1,j)
& +r_hFacZ(i,j+1)*omega3(i,j+1)
& ))*oneThird
& *uFld( i , j )*dyG( i , j ,bi,bj)*hFacW( i , j ,k,bi,bj)
vort3pm= ( r_hFacZ(i+1,j)*omega3(i+1,j)
& +(r_hFacZ(i, j )*omega3(i, j )
& +r_hFacZ(i+1,j-1)*omega3(i+1,j-1)
& ))*oneThird
& *uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj)*hFacW(i+1,j-1,k,bi,bj)
vort3pj= ( r_hFacZ(i+1,j)*omega3(i+1,j)
& +(r_hFacZ(i, j )*omega3(i, j )
& +r_hFacZ(i+1,j+1)*omega3(i+1,j+1)
& ))*oneThird
& *uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacW(i+1, j ,k,bi,bj)
vCoriolisTerm(i,j)= -( (vort3im+vort3ij)+(vort3pm+vort3pj) )
& *0.25d0 *recip_dyC(i,j,bi,bj)
& * maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
WRITE(msgBuf,'(A,I5,A)')
& 'MOM_VI_V_CORIOLIS: selectVortScheme=', selectVortScheme,
& ' not implemented'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R MOM_VI_V_CORIOLIS'
ENDIF
IF ( useJamartMomAdv ) THEN
DO j=2-Oly,sNy+Oly-1
DO i=1-Olx,sNx+Olx-1
vCoriolisTerm(i,j) = vCoriolisTerm(i,j)
& * 4.d0 * hFacS(i,j,k,bi,bj)
& / MAX( epsil,
& (hFacW( i ,j,k,bi,bj)+hFacW( i ,j-1,k,bi,bj))
& +(hFacW(i+1,j,k,bi,bj)+hFacW(i+1,j-1,k,bi,bj))
& )
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_V_CORIOLIS_C4(
I bi,bj,k,
I uFld,omega3,r_hFacZ,
O vCoriolisTerm,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 omega3(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 r_hFacZ(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vCoriolisTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER i,j
Real*8 vort3r(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uBarXY,vort3v,Rjp,Rjm
Real*8 uBarYm,uBarYp
LOGICAL northWestCorner, northEastCorner,
& southWestCorner, southEastCorner
INTEGER myFace
Real*8 oneSixth, oneTwelve
LOGICAL fourthVort3
PARAMETER(oneSixth=1.d0/6.d0 , oneTwelve=1.d0/12.d0)
PARAMETER(fourthVort3=.TRUE. )
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
vort3r(i,j) = r_hFacZ(i,j)*omega3(i,j)
ENDDO
ENDDO
IF ( useCubedSphereExchange.AND.highOrderVorticity ) THEN
myFace = bi
southWestCorner = .TRUE.
southEastCorner = .TRUE.
northWestCorner = .TRUE.
northEastCorner = .TRUE.
IF ( southWestCorner ) THEN
i = 1
j = 1
vort3r(i-1,j) = ( vort3r(i-1,j) + vort3r(i,j+1) )*0.5d0
ENDIF
IF ( southEastCorner ) THEN
i = sNx+1
j = 1
vort3r(i+1,j) = ( vort3r(i+1,j) + vort3r(i,j+1) )*0.5d0
ENDIF
IF ( northWestCorner ) THEN
i = 1
j = sNy+1
vort3r(i-1,j) = ( vort3r(i-1,j) + vort3r(i,j-1) )*0.5d0
ENDIF
IF ( northEastCorner ) THEN
i = sNx+1
j = sNy+1
vort3r(i+1,j) = ( vort3r(i+1,j) + vort3r(i,j-1) )*0.5d0
ENDIF
ENDIF
IF ( selectVortScheme.EQ.0 ) THEN
DO j=1,sNy+1
DO i=1,sNx
uBarXY=0.25*(
& (uFld( i , j )*dyG( i , j ,bi,bj)*hFacW( i , j ,k,bi,bj)
& +uFld( i ,j-1)*dyG( i ,j-1,bi,bj)*hFacW( i ,j-1,k,bi,bj))
& +(uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacW(i+1, j ,k,bi,bj)
& +uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj)*hFacW(i+1,j-1,k,bi,bj))
& )
IF (upwindVorticity) THEN
IF (uBarXY.GT.0.) THEN
vort3v=vort3r(i,j)
ELSE
vort3v=vort3r(i+1,j)
ENDIF
ELSEIF (fourthVort3) THEN
Rjp = vort3r(i+2,j) - vort3r(i+1,j)
Rjm = vort3r( i ,j) - vort3r(i-1,j)
vort3v=0.5*( vort3r(i,j) + vort3r(i+1,j)
& -oneTwelve*(Rjp-Rjm)
& )
ELSE
vort3v=0.5*( vort3r(i,j) + vort3r(i+1,j) )
ENDIF
vCoriolisTerm(i,j) = -vort3v*uBarXY*recip_dyC(i,j,bi,bj)
& * maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ELSEIF ( selectVortScheme.EQ.2 ) THEN
DO j=1,sNy+1
DO i=1,sNx
uBarYm=0.5*(
& uFld( i , j )*dyG( i , j ,bi,bj)*hFacW( i , j ,k,bi,bj)
& +uFld( i ,j-1)*dyG( i ,j-1,bi,bj)*hFacW( i ,j-1,k,bi,bj) )
uBarYp=0.5*(
& uFld(i+1, j )*dyG(i+1, j ,bi,bj)*hFacW(i+1, j ,k,bi,bj)
& +uFld(i+1,j-1)*dyG(i+1,j-1,bi,bj)*hFacW(i+1,j-1,k,bi,bj) )
IF (upwindVorticity) THEN
IF ( (uBarYm+uBarYp) .GT.0.) THEN
vort3v=uBarYm*vort3r( i ,j)
ELSE
vort3v=uBarYp*vort3r(i+1,j)
ENDIF
ELSEIF (fourthVort3) THEN
Rjp = vort3r(i+1,j) -oneSixth*( vort3r(i+2,j)-vort3r( i ,j) )
Rjm = vort3r( i ,j) +oneSixth*( vort3r(i+1,j)-vort3r(i-1,j) )
vort3v=0.5*( uBarYm*Rjm + uBarYp*Rjp )
ELSE
vort3v=0.5*( uBarYm*vort3r( i ,j) + uBarYp*vort3r(i+1,j) )
ENDIF
vCoriolisTerm(i,j) = -vort3v*recip_dyC(i,j,bi,bj)
& * maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ELSE
WRITE(msgBuf,'(A,I5,A)')
& 'MOM_VI_V_CORIOLIS_C4: selectVortScheme=', selectVortScheme,
& ' not implemented'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R MOM_VI_V_CORIOLIS_C4'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_V_GRAD_KE(
I bi,bj,K,
I KE,
O dKEdy,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,K
Real*8 KE(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dKEdy(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I,J
DO J=2-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
dKEdy(I,J)=-recip_dyC(i,j,bi,bj)*(KE(i,j)-KE(i,j-1))
& *maskS(i,j,k,BI,BJ)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOM_VI_V_VERTSHEAR(
I bi,bj,K,
I vFld,wFld,
U vShearTerm,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,K
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vShearTerm(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER I,J,Kp1,Km1
Real*8 mask_Kp1,mask_Km1,wBarYm,wBarYp
Real*8 vZm,vZp
LOGICAL rAdvAreaWeight
c1 Real*8 wBarYZ,vZbarZ
rAdvAreaWeight =.TRUE.
IF ( selectKEscheme.EQ.1 .OR. selectKEscheme.EQ.3 )
& rAdvAreaWeight =.FALSE.
Kp1=min(K+1,Nr)
mask_Kp1=1.
IF (K.EQ.Nr) mask_Kp1=0.
Km1=max(K-1,1)
mask_Km1=1.
IF (K.EQ.1) mask_Km1=0.
DO J=2-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
IF ( rAdvAreaWeight ) THEN
wBarYm=0.5*(
& wFld(I,J,K,bi,bj)*rA(i,j,bi,bj)*maskC(i,j,Km1,bi,bj)
& +wFld(I,J-1,K,bi,bj)*rA(i,j-1,bi,bj)*maskC(i,j-1,Km1,bi,bj)
& )*mask_Km1
& *recip_rAs(i,j,bi,bj)
wBarYp=0.5*(
& wFld(I,J,Kp1,bi,bj)*rA(i,j,bi,bj)
& +wFld(I,J-1,Kp1,bi,bj)*rA(i,j-1,bi,bj)
& )*mask_Kp1
& *recip_rAs(i,j,bi,bj)
ELSE
wBarYm=0.5*(
& wFld(I,J,K,bi,bj)*maskC(i,j,Km1,bi,bj)
& +wFld(I,J-1,K,bi,bj)*maskC(i,j-1,Km1,bi,bj)
& )*mask_Km1
wBarYp=0.5*(
& wFld(I,J,Kp1,bi,bj)
& +wFld(I,J-1,Kp1,bi,bj)
& )*mask_Kp1
ENDIF
vZm=(vFld(I,J,K,bi,bj)-mask_Km1*vFld(I,J,Km1,bi,bj))*rkSign
c2 & *recip_dRC(K)
vZp=(mask_Kp1*vFld(I,J,Kp1,bi,bj)-vFld(I,J,K,bi,bj))*rkSign
c2 & *recip_dRC(Kp1)
c1 IF (upwindShear) THEN
c1 wBarYZ=0.5*( wBarXm + wBarXp )
c1 IF (wBarYZ.GT.0.) THEN
c1 vZbarZ=vZp
c1 ELSE
c1 vZbarZ=vZm
c1 ENDIF
c1 ELSE
c1 vZbarZ=0.5*(vZm+vZp)
c1 ENDIF
c1 vShearTerm(I,J)=-wBarYZ*vZbarZ*maskS(I,J,K,bi,bj)
c2 vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)
c2 & *maskS(I,J,K,bi,bj)
IF (upwindShear) THEN
vShearTerm(I,J)=-0.5*
& ( (wBarYp*vZp+wBarYm*vZm)
& +(ABS(wBarYp)*vZp-ABS(wBarYm)*vZm)
& )*recip_hFacS(i,j,k,bi,bj)
& * recip_drF(K)
c3 & * recip_rAs(i,j,bi,bj)
ELSE
vShearTerm(I,J)=-0.5*(wBarYp*vZp+wBarYm*vZm)
& *recip_hFacS(i,j,k,bi,bj)
& * recip_drF(K)
c3 & * recip_rAs(i,j,bi,bj)
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE READ_FLD_XYZ_RS( pref,suff,field,myIter,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) pref,suff
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER myIter
INTEGER myThid
INTEGER ILNBLNK,IFNBLNK
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
INTEGER nNz
INTEGER iRec
INTEGER s1Lo,s1Hi,s2Lo,s2Hi
CHARACTER*(MAX_LEN_FNAM) fullName
C
s1Lo = IFNBLNK(pref)
s1Hi = ILNBLNK(pref)
IF ( suff .EQ. ' ' ) THEN
WRITE( fullName, '(A)' ) pref(s1Lo:s1Hi)
ELSE
s2Lo = IFNBLNK(suff)
s2Hi = ILNBLNK(suff)
WRITE( fullName, '(A,A)' ) pref(s1Lo:s1Hi),suff(s2Lo:s2Hi)
ENDIF
useCurrentDir = .FALSE.
fType='RS'
nNz=Nr
iRec=1
CALL MDS_READ_FIELD(
I fullName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O dummyRL, field,
I iRec, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE READ_FLD_XYZ_RL( pref,suff,field,myIter,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) pref,suff
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER myIter
INTEGER myThid
INTEGER ILNBLNK,IFNBLNK
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
INTEGER nNz
INTEGER iRec
INTEGER s1Lo,s1Hi,s2Lo,s2Hi
CHARACTER*(MAX_LEN_FNAM) fullName
C
s1Lo = IFNBLNK(pref)
s1Hi = ILNBLNK(pref)
IF ( suff .EQ. ' ' ) THEN
WRITE( fullName, '(A)' ) pref(s1Lo:s1Hi)
ELSE
s2Lo = IFNBLNK(suff)
s2Hi = ILNBLNK(suff)
WRITE( fullName, '(A,A)' ) pref(s1Lo:s1Hi),suff(s2Lo:s2Hi)
ENDIF
useCurrentDir = .FALSE.
fType='RL'
nNz=Nr
iRec=1
CALL MDS_READ_FIELD(
I fullName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O field, dummyRS,
I iRec, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE READ_FLD_XY_RS( pref,suff,field,myIter,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) pref,suff
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
INTEGER myIter
INTEGER myThid
INTEGER ILNBLNK,IFNBLNK
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
INTEGER nNz
INTEGER iRec
INTEGER s1Lo,s1Hi,s2Lo,s2Hi
CHARACTER*(MAX_LEN_FNAM) fullName
C
s1Lo = IFNBLNK(pref)
s1Hi = ILNBLNK(pref)
IF ( suff .EQ. ' ' ) THEN
WRITE( fullName, '(A)' ) pref(s1Lo:s1Hi)
ELSE
s2Lo = IFNBLNK(suff)
s2Hi = ILNBLNK(suff)
WRITE( fullName, '(A,A)' ) pref(s1Lo:s1Hi),suff(s2Lo:s2Hi)
ENDIF
useCurrentDir = .FALSE.
fType='RS'
nNz=1
iRec=1
CALL MDS_READ_FIELD(
I fullName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O dummyRL, field,
I iRec, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE READ_FLD_XY_RL( pref,suff,field,myIter,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) pref,suff
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
INTEGER myIter
INTEGER myThid
INTEGER ILNBLNK,IFNBLNK
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
INTEGER nNz
INTEGER iRec
INTEGER s1Lo,s1Hi,s2Lo,s2Hi
CHARACTER*(MAX_LEN_FNAM) fullName
C
s1Lo = IFNBLNK(pref)
s1Hi = ILNBLNK(pref)
IF ( suff .EQ. ' ' ) THEN
WRITE( fullName, '(A)' ) pref(s1Lo:s1Hi)
ELSE
s2Lo = IFNBLNK(suff)
s2Hi = ILNBLNK(suff)
WRITE( fullName, '(A,A)' ) pref(s1Lo:s1Hi),suff(s2Lo:s2Hi)
ENDIF
useCurrentDir = .FALSE.
fType='RL'
nNz=1
iRec=1
CALL MDS_READ_FIELD(
I fullName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O field, dummyRS,
I iRec, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE READ_REC_XY_RS( fName,field,iRec,myIter,myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
INTEGER nNz
useCurrentDir = .FALSE.
fType='RS'
nNz=1
CALL MDS_READ_FIELD(
I fName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O dummyRL, field,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_XY_RL( fName,field,iRec,myIter,myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
INTEGER nNz
useCurrentDir = .FALSE.
fType='RL'
nNz=1
CALL MDS_READ_FIELD(
I fName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O field, dummyRS,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_XYZ_RS( fName,field,iRec,myIter,myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
INTEGER nNz
useCurrentDir = .FALSE.
fType='RS'
nNz=Nr
CALL MDS_READ_FIELD(
I fName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O dummyRL, field,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_XYZ_RL( fName,field,iRec,myIter,myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
INTEGER nNz
useCurrentDir = .FALSE.
fType='RL'
nNz=Nr
CALL MDS_READ_FIELD(
I fName, readBinaryPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O field, dummyRS,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_3D_RS(
I fName, fPrec, nNz,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER nNz
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nNz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RS'
CALL MDS_READ_FIELD(
I fName, fPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O dummyRL, field,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_3D_RL(
I fName, fPrec, nNz,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER nNz
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nNz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RL'
CALL MDS_READ_FIELD(
I fName, fPrec, useCurrentDir,
I fType, nNz, 1, nNz,
O field, dummyRS,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_LEV_RS(
I fName, fPrec, kSiz, kLo, kHi,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER kSiz, kLo, kHi
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,kSiz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RS'
CALL MDS_READ_FIELD(
I fName, fPrec, useCurrentDir,
I fType, kSiz, kLo, kHi,
O dummyRL, field,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_LEV_RL(
I fName, fPrec, kSiz, kLo, kHi,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER kSiz, kLo, kHi
Real*8 field(1-Olx:sNx+Olx,1-Oly:sNy+Oly,kSiz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RL'
CALL MDS_READ_FIELD(
I fName, fPrec, useCurrentDir,
I fType, kSiz, kLo, kHi,
O field, dummyRS,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_XZ_RS(
I fName, fPrec, nNz,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER nNz
Real*8 field(1-Olx:sNx+Olx,nNz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RS'
CALL MDS_READ_SEC_XZ(
I fName, fPrec, useCurrentDir,
I fType, nNz,
O dummyRL, field,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_XZ_RL(
I fName, fPrec, nNz,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER nNz
Real*8 field(1-Olx:sNx+Olx,nNz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RL'
CALL MDS_READ_SEC_XZ(
I fName, fPrec, useCurrentDir,
I fType, nNz,
O field, dummyRS,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_YZ_RS(
I fName, fPrec, nNz,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER nNz
Real*8 field(1-Oly:sNy+Oly,nNz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRL(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RS'
CALL MDS_READ_SEC_YZ(
I fName, fPrec, useCurrentDir,
I fType, nNz,
O dummyRL, field,
I iRec, myThid )
RETURN
END
SUBROUTINE READ_REC_YZ_RL(
I fName, fPrec, nNz,
O field,
I iRec, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
CHARACTER*(*) fName
INTEGER fPrec
INTEGER nNz
Real*8 field(1-Oly:sNy+Oly,nNz,nSx,nSy)
INTEGER iRec
INTEGER myIter
INTEGER myThid
LOGICAL useCurrentDir
Real*8 dummyRS(1)
CHARACTER*(2) fType
useCurrentDir = .FALSE.
fType='RL'
CALL MDS_READ_SEC_YZ(
I fName, fPrec, useCurrentDir,
I fType, nNz,
O field, dummyRS,
I iRec, myThid )
RETURN
END
C
C
C
CStartofinterface
SUBROUTINE TIMEAVE_CUMUL_1K1T(
O fldtave,
I fld, deltaTloc,
I Ksize, k, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER Ksize
Real*8 fld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 deltaTloc
INTEGER k, bi, bj, myThid
CEndofinterface
INTEGER i, j
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& + fld(i,j)*deltaTloc
ENDDO
ENDDO
RETURN
END
C
C
C
CStartofinterface
SUBROUTINE TIMEAVE_CUMUL_1T(
O fldtave,
I fld, Ksize, deltaTloc,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER Ksize
Real*8 fld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize)
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 deltaTloc
INTEGER bi, bj, myThid
CEndofinterface
INTEGER i, j, k
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj)=
& fldtave(i,j,k,bi,bj)+fld(i,j,k)*deltaTloc
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
CStartofinterface
SUBROUTINE TIMEAVE_CUMUL_1VFC(
O fldtave,
I fld1, fld2, Ksize, deltaTloc,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER Ksize
Real*8 fld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fld2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 deltaTloc
INTEGER bi, bj, myThid
CEndofinterface
INTEGER i, j, k
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj)= fldtave(i,j,k,bi,bj)
& + deltaTloc*fld1(i,j,k,bi,bj)*fld2(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
CStartofinterface
SUBROUTINE TIMEAVE_CUMUL_2V(
O fldtave,
I fld1, fld2, Ksize, dir, deltaTloc,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER Ksize, dir
Real*8 fld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fld2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 deltaTloc
INTEGER bi, bj, myThid
CEndofinterface
INTEGER i, j, k
INTEGER km1
IF ( dir.eq.0 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj)= fldtave(i,j,k,bi,bj)
& + fld1(i,j,k,bi,bj)*fld2(i,j,k,bi,bj)*deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.1 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj)= fldtave(i,j,k,bi,bj)
& + .5 * ( fld1(i-1,j,k,bi,bj) + fld1(i,j,k,bi,bj) )
& * fld2(i,j,k,bi,bj)
& * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.2 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj)= fldtave(i,j,k,bi,bj)
& + .5 * ( fld1(i,j-1,k,bi,bj) + fld1(i,j,k,bi,bj) )
& * fld2(i,j,k,bi,bj)
& * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.3 ) THEN
DO k=1,Ksize
km1 = MAX(k-1,1)
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj)= fldtave(i,j,k,bi,bj)
& + .5 * ( fld1(i,j,km1,bi,bj) + fld1(i,j,k,bi,bj) )
& * fld2(i,j,k,bi,bj)
& * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.12 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& + .25d0*( fld1(i,j-1,k,bi,bj) + fld1(i,j,k,bi,bj) )
& *( fld2(i-1,j,k,bi,bj) + fld2(i,j,k,bi,bj) )
& * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.13 ) THEN
DO k=1,Ksize
km1 = MAX(k-1,1)
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& + .25d0*( fld1(i,j,km1,bi,bj) + fld1(i,j,k,bi,bj) )
& *( fld2(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)
& +fld2( i ,j,k,bi,bj)*rA( i ,j,bi,bj)
& )*recip_rAw(i,j,bi,bj)
& * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.23 ) THEN
DO k=1,Ksize
km1 = MAX(k-1,1)
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& + .25d0*( fld1(i,j,km1,bi,bj) + fld1(i,j,k,bi,bj) )
& *( fld2(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)
& +fld2(i, j ,k,bi,bj)*rA(i, j ,bi,bj)
& )*recip_rAs(i,j,bi,bj)
& * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.-13 ) THEN
DO k=2,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& + .5d0*( fld1(i,j,k-1,bi,bj) - fld1(i,j,k,bi,bj) )
& *( fld2(i-1,j,k,bi,bj)*rA(i-1,j,bi,bj)
& +fld2( i ,j,k,bi,bj)*rA( i ,j,bi,bj)
& )*recip_rAw(i,j,bi,bj)
& * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.-23 ) THEN
DO k=2,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& + .5d0*( fld1(i,j,k-1,bi,bj) - fld1(i,j,k,bi,bj) )
& *( fld2(i,j-1,k,bi,bj)*rA(i,j-1,bi,bj)
& +fld2(i, j ,k,bi,bj)*rA(i, j ,bi,bj)
& )*recip_rAs(i,j,bi,bj)
& * deltaTloc
ENDDO
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
CStartofinterface
SUBROUTINE TIMEAVE_CUMUL_2VFC(
O fldtave,
I fld1, fld2, fld3, Ksize, dir, deltaTloc,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER Ksize, dir
Real*8 fld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fld2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fld3(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 deltaTloc
INTEGER bi, bj, myThid
CEndofinterface
INTEGER i, j, k
IF ( dir.eq.0 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj) + deltaTloc*
& fld1(i,j,k,bi,bj)*fld2(i,j,k,bi,bj)*fld3(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.1 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj) + deltaTloc*
& 0.5*( fld1(i-1,j,k,bi,bj) + fld1(i,j,k,bi,bj) )
& *fld2(i,j,k,bi,bj)*fld3(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.2 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj) + deltaTloc*
& 0.5*( fld1(i,j-1,k,bi,bj) + fld1(i,j,k,bi,bj) )
& *fld2(i,j,k,bi,bj)*fld3(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
CStartofinterface
SUBROUTINE TIMEAVE_CUMULATE(
O fldtave,
I fld, Ksize, deltaTloc,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER Ksize
Real*8 fld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 deltaTloc
INTEGER bi, bj, myThid
CEndofinterface
INTEGER i, j, k
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj)=
& fldtave(i,j,k,bi,bj)+fld(i,j,k,bi,bj)*deltaTloc
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
CStartofinterface
SUBROUTINE TIMEAVE_CUMUL_DIF_1T(
O fldtave,
I fld1, fld2, Ksize, dir, deltaTloc,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER Ksize, dir
Real*8 fld1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 fld2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize)
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 deltaTloc
INTEGER bi, bj, myThid
CEndofinterface
INTEGER i, j, k
IF ( dir.eq.1 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& - ( fld1(i,j,k,bi,bj) - fld1(i-1,j,k,bi,bj) )
& * recip_dxC(i,j,bi,bj)
& * fld2(i,j,k) * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.2 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& - ( fld1(i,j,k,bi,bj) - fld1(i,j-1,k,bi,bj) )
& * recip_dyC(i,j,bi,bj)
& * fld2(i,j,k) * deltaTloc
ENDDO
ENDDO
ENDDO
ELSEIF ( dir.eq.3 ) THEN
DO k=2,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& + ( fld1(i,j,k,bi,bj) - fld1(i,j,k-1,bi,bj) )
& * recip_drC(k)
& * fld2(i,j,k) * deltaTloc
ENDDO
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
CStartofinterface
SUBROUTINE TIMEAVE_NORMA_2V(
U fldtave,
I cumulWeight, Ksize,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER bi, bj, Ksize, myThid
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 cumulWeight(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
CEndofinterface
INTEGER i, j, k
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
IF ( cumulWeight(i,j,k,bi,bj) .GT. 0.d0 ) THEN
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& / cumulWeight(i,j,k,bi,bj)
ENDIF
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
SUBROUTINE TIMEAVE_NORMALIZ(
U fldtave,
I cumulTime, kSize, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER kSize
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize,nSx,nSy)
Real*8 cumulTime(kSize,nSx,nSy)
INTEGER bi, bj
INTEGER myThid
INTEGER i, j, k
DO k=1,kSize
IF ( cumulTime(k,bi,bj) .NE. 0. ) THEN
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& / cumulTime(k,bi,bj)
ENDDO
ENDDO
ENDIF
ENDDO
RETURN
END
C
C
C
SUBROUTINE TIMEAVE_NORMALIZE(
U fldtave,
I timeave_cumul, Ksize,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER Ksize
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
Real*8 timeave_cumul(nSx,nSy)
INTEGER bi, bj
INTEGER myThid
INTEGER i, j, k
IF ( timeave_cumul(bi,bj) .NE. 0.d0 ) THEN
DO k=1,Ksize
DO j=1,sNy
DO i=1,sNx
fldtave(i,j,k,bi,bj) = fldtave(i,j,k,bi,bj)
& / timeave_cumul(bi,bj)
ENDDO
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
CStartofinterface
SUBROUTINE TIMEAVE_RESET( fldtave, Ksize, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER bi, bj, Ksize, myThid
Real*8 fldtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Ksize,nSx,nSy)
CEndofinterface
INTEGER i, j, k
DO k=1,Ksize
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
fldtave(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE TIMEAVE_STATVARS(
I myTime, myIter, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter, bi, bj
INTEGER myThid
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL DIFFERENT_MULTIPLE
LOGICAL dumpFiles
Real*8 DDTT
IF ( myIter .EQ. nIter0 ) THEN
CALL TIMEAVE_RESET(uFluxtave, 1, bi, bj, myThid)
CALL TIMEAVE_RESET(vFluxtave, 1, bi, bj, myThid)
CALL TIMEAVE_RESET(tFluxtave, 1, bi, bj, myThid)
CALL TIMEAVE_RESET(sFluxtave, 1, bi, bj, myThid)
CALL TIMEAVE_RESET(etatave, 1, bi, bj, myThid)
CALL TIMEAVE_RESET(thetatave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(salttave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(uVeltave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(vVeltave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(wVeltave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(phiHydLowtave,1, bi, bj, myThid)
CALL TIMEAVE_RESET(UTtave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(VTtave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(WTtave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(UStave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(VStave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(WStave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(Eta2tave, 1, bi, bj, myThid)
CALL TIMEAVE_RESET(TTtave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(UUtave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(VVtave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(UVtave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(TdiffRtave,Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(uZetatave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(vZetatave, Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(phiHydtave,Nr, bi, bj, myThid)
CALL TIMEAVE_RESET(phiHydLow2Tave,1, bi, bj, myThid)
CALL TIMEAVE_RESET(ConvectCountTave,Nr,bi,bj,myThid)
timeAve_half(bi,bj) = 0.d0
timeAve_full(bi,bj) = 0.d0
ENDIF
IF ( myIter .EQ. nIter0 ) THEN
DDTT = deltaTclock*(1.d0 - tave_lastIter)
ELSE
DDTT = deltaTclock
dumpFiles = DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)
IF ( dumpFiles ) DDTT = deltaTclock*tave_lastIter
ENDIF
IF ( DDTT .NE. 0.d0) THEN
CALL TIMEAVE_CUMULATE(etatave, etaN, 1 , DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMULATE(thetatave,theta, Nr, DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMULATE(salttave, salt, Nr, DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMULATE(uVeltave, uVel, Nr, DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMULATE(vVeltave, vVel, Nr, DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMULATE(wVeltave, wVel, Nr, DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(Eta2tave, etaN,etaN, 1, 0,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(TTtave, theta,theta, Nr, 0,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(UUtave, uVel, uVel, Nr, 0,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(VVtave, vVel, vVel, Nr, 0,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(UVtave, uVel, vVel, Nr, 12,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(WTtave, theta, wVel, Nr, 3,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(WStave, salt, wVel, Nr, 3,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2VFC(UTtave, theta, uVel, hFacW, Nr, 1,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2VFC(VTtave, theta, vVel, hFacS, Nr, 2,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2VFC(UStave, salt, uVel, hFacW, Nr, 1,
& DDTT, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2VFC(VStave, salt, vVel, hFacS, Nr, 2,
& DDTT, bi, bj, myThid)
timeAve_half(bi,bj) = timeAve_half(bi,bj)+DDTT
ENDIF
IF ( myIter .NE. nIter0 ) THEN
CALL TIMEAVE_CUMULATE(phiHydLowtave, phiHydLow, 1,
& deltaTclock, bi, bj, myThid)
CALL TIMEAVE_CUMULATE(phiHydtave, totPhihyd, Nr,
& deltaTclock, bi, bj, myThid)
CALL TIMEAVE_CUMUL_2V(phiHydLow2Tave,
& phiHydLow,phiHydLow, 1, 0, deltaTclock, bi, bj, myThid)
timeAve_full(bi,bj) = timeAve_full(bi,bj)+deltaTclock
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE TIMEAVE_STATV_WRITE( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL DIFFERENT_MULTIPLE
INTEGER IO_ERRCOUNT
EXTERNAL IO_ERRCOUNT
LOGICAL useVariableK
CHARACTER*(MAX_LEN_FNAM) suff
INTEGER bi,bj
INTEGER beginIOErrCount
INTEGER endIOErrCount
CHARACTER*(MAX_LEN_MBUF) msgBuf
LOGICAL dumpFiles
dumpFiles = DIFFERENT_MULTIPLE(taveFreq,myTime,deltaTClock)
IF (dumpFiles) THEN
useVariableK = useKPP .OR. usePP81 .OR. useMY82 .OR. useGGL90
& .OR. useGMredi .OR. ivdc_kappa.NE.0.
WRITE(suff,'(I10.10)') myIter
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
CALL TIMEAVE_NORMALIZE(uFluxtave,timeAve_full,1 ,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(vFluxtave,timeAve_full,1 ,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(tFluxtave,timeAve_full,1 ,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(sFluxtave,timeAve_full,1 ,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(etatave, timeAve_half,1 ,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(thetatave,timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(salttave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(uVeltave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(vVeltave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(wVeltave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(phiHydLowtave,timeAve_full,1,
& bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(UTtave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(VTtave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(WTtave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(UStave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(VStave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(WStave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(Eta2tave, timeAve_half,1 ,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(TTtave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(UUtave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(VVtave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(UVtave, timeAve_half,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(TdiffRtave,timeAve_full,Nr,
& bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(uZetatave,timeAve_full,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(vZetatave,timeAve_full,Nr,bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(phiHydtave,timeAve_full,Nr,
& bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(phiHydLow2Tave,timeAve_full,1,
& bi,bj,myThid)
CALL TIMEAVE_NORMALIZE(ConvectCountTave,timeAve_full,Nr,
& bi,bj,myThid)
ENDDO
ENDDO
CALL BARRIER(myThid)
IF (timeave_mdsio) THEN
beginIOErrCount = IO_ERRCOUNT(myThid)
CALL WRITE_FLD_XY_RL('ETAtave.' ,suff,etatave ,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('Ttave.',suff,thetatave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('Stave.',suff,salttave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('uVeltave.',suff,uVeltave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('vVeltave.',suff,vVeltave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('wVeltave.',suff,wVeltave,myIter,myThid)
CALL WRITE_FLD_XY_RL('Eta2tave.',suff,Eta2tave ,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('UTtave.',suff,UTtave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('VTtave.',suff,VTtave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('WTtave.',suff,WTtave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('UStave.',suff,UStave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('VStave.',suff,VStave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('WStave.',suff,WStave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('TTtave.',suff,TTtave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('UUtave.',suff,UUtave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('VVtave.',suff,VVtave,myIter,myThid)
CALL WRITE_FLD_XYZ_RL('UVtave.',suff,UVtave,myIter,myThid)
IF (useVariableK)
& CALL WRITE_FLD_XYZ_RL('Tdiftave.',suff,TdiffRtave,
& myIter,myThid)
IF (vectorInvariantMomentum) THEN
CALL WRITE_FLD_XYZ_RL('uZtave.',suff,uZetatave,
& myIter,myThid)
CALL WRITE_FLD_XYZ_RL('vZtave.',suff,vZetatave,
& myIter,myThid)
ENDIF
CALL WRITE_FLD_XYZ_RL('PhHytave.',suff,phiHydtave,
& myIter,myThid)
IF ( fluidIsWater ) THEN
CALL WRITE_FLD_XY_RL('PHLtave.',suff,phiHydLowtave,
& myIter,myThid)
CALL WRITE_FLD_XY_RL('uFluxtave.',suff,uFluxtave,
& myIter,myThid)
CALL WRITE_FLD_XY_RL('vFluxtave.',suff,vFluxtave,
& myIter,myThid)
CALL WRITE_FLD_XY_RL('tFluxtave.',suff,tFluxtave,
& myIter,myThid)
CALL WRITE_FLD_XY_RL('sFluxtave.',suff,sFluxtave,
& myIter,myThid)
CALL WRITE_FLD_XY_RL('PHL2tave.',suff,phiHydLow2tave,
& myIter,myThid)
CALL WRITE_FLD_XYZ_RL('Convtave.',suff,ConvectCountTave,
& myIter,myThid)
ENDIF
endIOErrCount = IO_ERRCOUNT(myThid)
IF ( endIOErrCount .NE. beginIOErrCount ) THEN
WRITE(msgBuf,'(A)') 'S/R WRITE_TIME_AVERAGES'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A)') 'Error writing out data'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A,I10)') 'Timestep ',myIter
CALL PRINT_ERROR( msgBuf, myThid )
ELSE
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(A,I10)')
& '// Time-average data written, t-step', myIter
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(A)') ' '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
ENDIF
ENDIF
ENDIF
CALL BARRIER(myThid)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
CALL TIMEAVE_STATVARS(myTime, nIter0, bi, bj, myThid)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE TIMEAVE_SURF_FLUX(
I bi, bj, myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER bi, bj
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER I, J, K
Real*8 tmpFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
IF ( usingPCoords ) THEN
k=Nr
ELSE
k=1
ENDIF
DO j=1,sNy
DO i=1,sNx
tmpFld(i,j)=fu(i,j,bi,bj)*foFacMom*maskW(i,j,k,bi,bj)
ENDDO
ENDDO
CALL TIMEAVE_CUMUL_1T(uFluxtave,tmpFld,1,
& deltaTclock, bi, bj, myThid)
DO j=1,sNy
DO i=1,sNx
tmpFld(i,j)=fv(i,j,bi,bj)*foFacMom*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
CALL TIMEAVE_CUMUL_1T(vFluxtave,tmpFld,1,
& deltaTclock, bi, bj, myThid)
DO j=1,sNy
DO i=1,sNx
tmpFld(i,j) =
& (surfaceForcingT(i,j,bi,bj)+surfaceForcingTice(I,J,bi,bj))
& *HeatCapacity_Cp*rUnit2mass
ENDDO
ENDDO
CALL TIMEAVE_CUMUL_1T( tFluxtave, tmpFld, 1,
& deltaTclock, bi, bj, myThid)
DO j=1,sNy
DO i=1,sNx
tmpFld(i,j)=
& surfaceForcingS(i,j,bi,bj)*rUnit2mass
ENDDO
ENDDO
CALL TIMEAVE_CUMUL_1T( sFluxtave, tmpFld, 1,
& deltaTclock, bi, bj, myThid)
RETURN
END
C
C
C
LOGICAL FUNCTION DIFFERENT_MULTIPLE( freq, val1, step )
IMPLICIT NONE
Real*8 freq, val1, step
Real*8 v1, v2, v3, v4, d1, d2, d3
DIFFERENT_MULTIPLE = .FALSE.
IF ( freq .NE. 0. ) THEN
IF ( ABS(step) .GT. freq ) THEN
DIFFERENT_MULTIPLE = .TRUE.
ELSE
v1 = val1
v2 = val1 - step
v3 = val1 + step
v4 = NINT(v1/freq)*freq
d1 = v1-v4
d2 = v2-v4
d3 = v3-v4
IF ( ABS(d1) .LT. ABS(d2) .AND. ABS(d1) .LE. ABS(d3) )
& DIFFERENT_MULTIPLE = .TRUE.
ENDIF
ENDIF
RETURN
END
C
C
C
SUBROUTINE FILL_CS_CORNER_TR_RL(
I fill4dir, withSigns,
U trFld,
I bi,bj, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER fill4dir
LOGICAL withSigns
Real*8 trFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER bi,bj
INTEGER myThid
INTEGER i,j
LOGICAL southWestCorner
LOGICAL southEastCorner
LOGICAL northWestCorner
LOGICAL northEastCorner
Real*8 negOne
negOne = 1.
IF (withSigns) negOne = -1.
IF (useCubedSphereExchange) THEN
southWestCorner = .TRUE.
southEastCorner = .TRUE.
northWestCorner = .TRUE.
northEastCorner = .TRUE.
IF ( fill4dir .EQ. 0 ) THEN
IF ( southWestCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld( 1-i , 1-j ) = 0.d0
ENDDO
ENDDO
ENDIF
IF ( southEastCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld(sNx+i, 1-j ) = 0.d0
ENDDO
ENDDO
ENDIF
IF ( northWestCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld( 1-i ,sNy+j) = 0.d0
ENDDO
ENDDO
ENDIF
IF ( northEastCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld(sNx+i,sNy+j) = 0.d0
ENDDO
ENDDO
ENDIF
ELSEIF ( fill4dir .EQ. 1 ) THEN
C
C
C
C
IF ( southWestCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld( 1-i , 1-j ) = negOne*trFld( 1-j , i )
ENDDO
ENDDO
ENDIF
IF ( southEastCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld(sNx+i, 1-j ) = negOne*trFld(sNx+j, i )
ENDDO
ENDDO
ENDIF
IF ( northWestCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld( 1-i ,sNy+j) = negOne*trFld( 1-j , sNy+1-i )
ENDDO
ENDDO
ENDIF
IF ( northEastCorner ) THEN
DO j=1,OLy
DO i=1,OLx
trFld(sNx+i,sNy+j) = negOne*trFld(sNx+j, sNy+1-i )
ENDDO
ENDDO
ENDIF
ELSEIF ( fill4dir .EQ. 2 ) THEN
C
C
C
IF ( southWestCorner ) THEN
DO j=1,Oly
DO i=1,Olx
trFld( 1-i , 1-j ) = negOne*trFld( j , 1-i )
ENDDO
ENDDO
ENDIF
IF ( southEastCorner ) THEN
DO j=1,Oly
DO i=1,Olx
trFld(sNx+i, 1-j ) = negOne*trFld(sNx+1-j, 1-i )
ENDDO
ENDDO
ENDIF
IF ( northWestCorner ) THEN
DO j=1,Oly
DO i=1,Olx
trFld( 1-i ,sNy+j) = negOne*trFld( j ,sNy+i)
ENDDO
ENDDO
ENDIF
IF ( northEastCorner ) THEN
DO j=1,Oly
DO i=1,Olx
trFld(sNx+i,sNy+j) = negOne*trFld(sNx+1-j,sNy+i)
ENDDO
ENDDO
ENDIF
ELSE
STOP 'FILL_CS_CORNER_TR_RL: fill4dir has illegal value'
ENDIF
ENDIF
RETURN
END
C
C
C
SUBROUTINE FILL_CS_CORNER_UV_RS(
I withSigns,
U uFld, vFld,
I bi,bj, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
LOGICAL withSigns
Real*8 uFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER bi,bj
INTEGER myThid
INTEGER i,j
LOGICAL southWestCorner
LOGICAL southEastCorner
LOGICAL northWestCorner
LOGICAL northEastCorner
Real*8 negOne
IF (useCubedSphereExchange) THEN
negOne = 1.d0
IF (withSigns) negOne = -1.d0
southWestCorner = .TRUE.
southEastCorner = .TRUE.
northWestCorner = .TRUE.
northEastCorner = .TRUE.
C
C
IF ( southWestCorner ) THEN
DO j=1,OLy
DO i=1,OLx
uFld( 1-i , 1-j ) = negOne*vFld( 1-j , 1+i )
ENDDO
ENDDO
DO j=1,OLy
DO i=1,OLx
vFld( 1-i , 1-j ) = negOne*uFld( 1+j , 1-i )
ENDDO
ENDDO
ENDIF
IF ( southEastCorner ) THEN
DO j=1,OLy
DO i=2,OLx
uFld(sNx+i, 1-j ) = vFld(sNx+j, i )
ENDDO
ENDDO
DO j=1,OLy
DO i=1,OLx
vFld(sNx+i, 1-j ) = uFld(sNx+1-j, 1-i )
ENDDO
ENDDO
ENDIF
IF ( northWestCorner ) THEN
DO j=1,OLy
DO i=1,OLx
uFld( 1-i ,sNy+j) = vFld( 1-j , sNy+1-i )
ENDDO
ENDDO
DO j=2,OLy
DO i=1,OLx
vFld( 1-i ,sNy+j) = uFld( j , sNy+i )
ENDDO
ENDDO
ENDIF
IF ( northEastCorner ) THEN
DO j=1,OLy
DO i=2,OLx
uFld(sNx+i,sNy+j) = negOne*vFld(sNx+j, sNy+2-i )
ENDDO
ENDDO
DO j=2,OLy
DO i=1,OLx
vFld(sNx+i,sNy+j) = negOne*uFld(sNx+2-j, sNy+i )
ENDDO
ENDDO
ENDIF
ENDIF
RETURN
END
C
C
C
SUBROUTINE LEF_ZERO( arr ,myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 arr (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER i,j,bi,bj
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
arr(i,j,bi,bj)=0.
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
SUBROUTINE EXCH_3D_RS(
U phi,
I myNz, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 phi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:myNz,nSx,nSy)
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
IF (useCubedSphereExchange) THEN
CALL EXCH1_RS_CUBE( phi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RS( phi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_3D_RL(
U phi,
I myNz, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 phi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:myNz,nSx,nSy)
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
IF (useCubedSphereExchange) THEN
CALL EXCH1_RL_CUBE( phi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RL( phi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_XY_RL(
U phi,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 phi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = 1
IF (useCubedSphereExchange) THEN
CALL EXCH1_RL_CUBE( phi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RL( phi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_XY_RS(
U phi,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 phi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = 1
IF (useCubedSphereExchange) THEN
CALL EXCH1_RS_CUBE( phi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RS( phi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_XYZ_RL(
U phi,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 phi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = Nr
IF (useCubedSphereExchange) THEN
CALL EXCH1_RL_CUBE( phi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RL( phi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_XYZ_RS(
U phi,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 phi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:Nr,nSx,nSy)
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = Nr
IF (useCubedSphereExchange) THEN
CALL EXCH1_RS_CUBE( phi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RS( phi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_3D_RS(
U Uphi, Vphi,
I withSigns, myNz, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
IF (useCubedSphereExchange) THEN
CALL EXCH1_UV_RS_CUBE( Uphi, Vphi, withSigns,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RS( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RS( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_3D_RL(
U Uphi, Vphi,
I withSigns, myNz, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
IF (useCubedSphereExchange) THEN
CALL EXCH1_UV_RL_CUBE( Uphi, Vphi, withSigns,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RL( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RL( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_XY_RS(
U Uphi, Vphi,
I withSigns, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = 1
IF (useCubedSphereExchange) THEN
CALL EXCH1_UV_RS_CUBE( Uphi, Vphi, withSigns,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RS( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RS( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_XY_RL(
U Uphi, Vphi,
I withSigns, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = 1
IF (useCubedSphereExchange) THEN
CALL EXCH1_UV_RL_CUBE( Uphi, Vphi, withSigns,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RL( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RL( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_XYZ_RS(
U Uphi, Vphi,
I withSigns, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = Nr
IF (useCubedSphereExchange) THEN
CALL EXCH1_UV_RS_CUBE( Uphi, Vphi, withSigns,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RS( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RS( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_XYZ_RL(
U Uphi, Vphi,
I withSigns, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY, myNz
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
myNz = Nr
IF (useCubedSphereExchange) THEN
CALL EXCH1_UV_RL_CUBE( Uphi, Vphi, withSigns,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ELSE
CALL EXCH1_RL( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RL( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_AGRID_3D_RS(
U Uphi, Vphi,
I withSigns, myNz, myThid )
C
C
C
C
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER i,j,k,bi,bj
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
Real*8 dummy1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dummy2(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 negOne
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
negOne = 1.
IF (withSigns) negOne = -1.
IF (useCubedSphereExchange) THEN
CALL EXCH1_RS_CUBE( Uphi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RS_CUBE( Vphi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k = 1,myNz
DO j = 1-OLy,sNy+OLy
DO i = 1-OLx,sNx+OLx
dummy1(i,j) = Uphi(i,j,k,bi,bj)
dummy2(i,j) = Vphi(i,j,k,bi,bj)
ENDDO
ENDDO
IF ( MOD(bi,2).EQ.1 ) THEN
DO j = 1,sNy
DO i = 1,exchWidthX
Uphi(1-i,j,k,bi,bj) = dummy2(1-i,j)
Vphi(1-i,j,k,bi,bj) = dummy1(1-i,j)*negOne
ENDDO
ENDDO
DO j = 1,exchWidthY
DO i = 1,sNx
Uphi(i,sNy+j,k,bi,bj) = dummy2(i,sNy+j)*negOne
Vphi(i,sNy+j,k,bi,bj) = dummy1(i,sNy+j)
ENDDO
ENDDO
ELSE
DO j = 1,sNy
DO i = 1,exchWidthX
Uphi(sNx+i,j,k,bi,bj) = dummy2(sNx+i,j)
Vphi(sNx+i,j,k,bi,bj) = dummy1(sNx+i,j)*negOne
ENDDO
ENDDO
DO j = 1,exchWidthY
DO i = 1,sNx
Uphi(i,1-j,k,bi,bj) = dummy2(i,1-j)*negOne
Vphi(i,1-j,k,bi,bj) = dummy1(i,1-j)
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDDO
ELSE
CALL EXCH1_RS( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RS( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_AGRID_3D_RL(
U Uphi, Vphi,
I withSigns, myNz, myThid )
C
C
C
C
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 Uphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
Real*8 Vphi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER i,j,k,bi,bj
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
Real*8 dummy1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dummy2(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 negOne
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
negOne = 1.
IF (withSigns) negOne = -1.
IF (useCubedSphereExchange) THEN
CALL EXCH1_RL_CUBE( Uphi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RL_CUBE( Vphi, .FALSE.,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k = 1,myNz
DO j = 1-OLy,sNy+OLy
DO i = 1-OLx,sNx+OLx
dummy1(i,j) = Uphi(i,j,k,bi,bj)
dummy2(i,j) = Vphi(i,j,k,bi,bj)
ENDDO
ENDDO
IF ( MOD(bi,2).EQ.1 ) THEN
DO j = 1,sNy
DO i = 1,exchWidthX
Uphi(1-i,j,k,bi,bj) = dummy2(1-i,j)
Vphi(1-i,j,k,bi,bj) = dummy1(1-i,j)*negOne
ENDDO
ENDDO
DO j = 1,exchWidthY
DO i = 1,sNx
Uphi(i,sNy+j,k,bi,bj) = dummy2(i,sNy+j)*negOne
Vphi(i,sNy+j,k,bi,bj) = dummy1(i,sNy+j)
ENDDO
ENDDO
ELSE
DO j = 1,sNy
DO i = 1,exchWidthX
Uphi(sNx+i,j,k,bi,bj) = dummy2(sNx+i,j)
Vphi(sNx+i,j,k,bi,bj) = dummy1(sNx+i,j)*negOne
ENDDO
ENDDO
DO j = 1,exchWidthY
DO i = 1,sNx
Uphi(i,1-j,k,bi,bj) = dummy2(i,1-j)*negOne
Vphi(i,1-j,k,bi,bj) = dummy1(i,1-j)
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDDO
ELSE
CALL EXCH1_RL( Uphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RL( Vphi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_DGRID_3D_RS(
U uPhi, vPhi,
I withSigns, myNz, myThid )
C
C
C
C
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 uPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
Real*8 vPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER i,j,k,bi,bj
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
Real*8 negOne
INTEGER myFace
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
negOne = 1.
IF (withSigns) negOne = -1.
IF ( useCubedSphereExchange ) THEN
CALL EXCH_UV_3D_RS(
U vPhi, uPhi,
I .FALSE., myNz, myThid )
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
myFace = bi
DO k = 1,myNz
IF ( MOD(myFace,2).EQ.1 ) THEN
DO j = 1,exchWidthY
DO i = 1-OLx,sNx+OLx
uPhi(i,sNy+j,k,bi,bj) = uPhi(i,sNy+j,k,bi,bj)*negOne
ENDDO
ENDDO
DO j = 1-OLy,sNy+OLy
DO i = 1,exchWidthX
vPhi(1-i,j,k,bi,bj) = vPhi(1-i,j,k,bi,bj)*negOne
ENDDO
ENDDO
ELSE
DO j = 1-OLy,sNy+OLy
DO i = 1,exchWidthX
vPhi(sNx+i,j,k,bi,bj) = vPhi(sNx+i,j,k,bi,bj)*negOne
ENDDO
ENDDO
DO j = 1,exchWidthY
DO i = 1-OLx,sNx+OLx
uPhi(i,1-j,k,bi,bj) = uPhi(i,1-j,k,bi,bj)*negOne
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDDO
ELSE
CALL EXCH1_RS( uPhi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RS( vPhi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
SUBROUTINE EXCH_UV_DGRID_3D_RL(
U uPhi, vPhi,
I withSigns, myNz, myThid )
C
C
C
C
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER myNz
Real*8 uPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
Real*8 vPhi(1-OLx:sNx+OLx,1-OLy:sNy+OLy,myNz,nSx,nSy)
LOGICAL withSigns
INTEGER myThid
INTEGER i,j,k,bi,bj
INTEGER OLw, OLe, OLn, OLs, exchWidthX, exchWidthY
Real*8 negOne
INTEGER myFace
OLw = OLx
OLe = OLx
OLn = OLy
OLs = OLy
exchWidthX = OLx
exchWidthY = OLy
negOne = 1.
IF (withSigns) negOne = -1.
IF ( useCubedSphereExchange ) THEN
CALL EXCH_UV_3D_RL(
U vPhi, uPhi,
I .FALSE., myNz, myThid )
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
myFace = bi
DO k = 1,myNz
IF ( MOD(myFace,2).EQ.1 ) THEN
DO j = 1,exchWidthY
DO i = 1-OLx,sNx+OLx
uPhi(i,sNy+j,k,bi,bj) = uPhi(i,sNy+j,k,bi,bj)*negOne
ENDDO
ENDDO
DO j = 1-OLy,sNy+OLy
DO i = 1,exchWidthX
vPhi(1-i,j,k,bi,bj) = vPhi(1-i,j,k,bi,bj)*negOne
ENDDO
ENDDO
ELSE
DO j = 1-OLy,sNy+OLy
DO i = 1,exchWidthX
vPhi(sNx+i,j,k,bi,bj) = vPhi(sNx+i,j,k,bi,bj)*negOne
ENDDO
ENDDO
DO j = 1,exchWidthY
DO i = 1-OLx,sNx+OLx
uPhi(i,1-j,k,bi,bj) = uPhi(i,1-j,k,bi,bj)*negOne
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDDO
ELSE
CALL EXCH1_RL( uPhi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
CALL EXCH1_RL( vPhi,
I OLw, OLe, OLs, OLn, myNz,
I exchWidthX, exchWidthY,
I EXCH_UPDATE_CORNERS, myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE ADAMS_BASHFORTH2(
I bi, bj, k,
U gTracer, gTrNm1,
I startAB, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,k
Real*8 gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gTrNm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER startAB
INTEGER myIter, myThid
INTEGER i,j
Real*8 ab15,ab05
Real*8 gTrtmp
IF ( myIter.EQ.nIter0 .AND. startAB.EQ.0 ) THEN
ab15 = 1.d0
ab05 = 0.d0
ELSE
ab15 = 1.5d0 + abEps
ab05 = -( 0.5d0 + abEps )
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
gTrtmp = ab15*gTracer(i,j,k,bi,bj)
& + ab05*gTrNm1(i,j,k,bi,bj)
gTrNm1(i,j,k,bi,bj) = gTracer(i,j,k,bi,bj)
gTracer(i,j,k,bi,bj) = gTrtmp
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE ADAMS_BASHFORTH3(
I bi, bj, kArg,
U gTracer, gTrNm,
I startAB, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,kArg
Real*8 gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gTrNm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,2)
INTEGER startAB
INTEGER myIter, myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_3D_DIFFUSIVITY(
I bi,bj,iMin,iMax,jMin,jMax,
I trIdentity, trUseGMRedi, trUseKPP,
O KappaRTr,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER trIdentity
LOGICAL trUseGMRedi, trUseKPP
Real*8 KappaRTr(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
INTEGER myThid
INTEGER i,j,k
Real*8 KbryanLewis79
CHARACTER*(MAX_LEN_MBUF) msgBuf
IF ( .NOT. trUseKPP ) THEN
DO k = 1,Nr
KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
& *(atan(-(rF(k)-diffKrBL79Ho)/diffKrBL79scl)/PI+0.5d0)
DO j = 1-Oly,sNy+Oly
DO i = 1-Olx,sNx+Olx
IF ( .TRUE. ) THEN
KappaRTr(i,j,k) =
& IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
& + KbryanLewis79
ENDIF
ENDDO
ENDDO
ENDDO
IF ( trIdentity.EQ.GAD_TEMPERATURE ) THEN
DO k = 1,Nr
DO j = 1-Oly,sNy+Oly
DO i = 1-Olx,sNx+Olx
KappaRTr(i,j,k) = KappaRTr(i,j,k)
& + diffKrNrT(k)
ENDDO
ENDDO
ENDDO
ELSEIF ( trIdentity.EQ.GAD_SALINITY) THEN
DO k = 1,Nr
DO j = 1-Oly, sNy+Oly
DO i = 1-Olx, sNx+Olx
KappaRTr(i,j,k) = KappaRTr(i,j,k)
& + diffKrNrS(k)
ENDDO
ENDDO
ENDDO
ELSE
WRITE(msgBuf,'(A,I4)')
& ' CALC_3D_DIFFUSIVITY: Invalid tracer Id: ',trIdentity
CALL PRINT_ERROR(msgBuf, myThid)
STOP 'ABNORMAL END: S/R CALC_3D_DIFFUSIVITY'
ENDIF
ENDIF
IF (trUseGMRedi) THEN
CALL GMREDI_CALC_DIFF(
I bi,bj,iMin,iMax,jMin,jMax,0,Nr,
U KappaRTr,
I trIdentity,myThid)
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_BUOYANCY(
I bi, bj, iMin, iMax, jMin, jMax, k, rhoLoc,
O buoy,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k
Real*8 rhoLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 buoy (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
INTEGER i,j
IF ( buoyancyRelation .EQ. 'ATMOSPHERIC' ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
buoy(i,j)=(theta(i,j,k,bi,bj)-tRef(k))/tRef(k)
ENDDO
ENDDO
ELSEIF ( buoyancyRelation .EQ. 'OCEANIC' ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
buoy(i,j)=-gravity*recip_rhoConst*rholoc(i,j)
ENDDO
ENDDO
ELSEIF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
if ( rholoc(i,j) .ne. 0. ) then
rholoc(i,j) = 1./rholoc(i,j)
buoy(i,j)=rholoc(i,j)
endif
ENDDO
ENDDO
ELSE
STOP
&'CALC_BUOANCY: variable "buoyancyRelation" has an illegal value'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_COMMON_FACTORS(
I uVel, vVel,
O uFld, vFld, uTrans, vTrans, xA, yA,
I k,bi,bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 vVel (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER k,bi,bj
INTEGER myThid
INTEGER i,j
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
xA(i,j) = dyG(i,j,bi,bj)*deepFacC(k)
& *drF(k)*hFacW(i,j,k,bi,bj)
yA(i,j) = dxG(i,j,bi,bj)*deepFacC(k)
& *drF(k)*hFacS(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
uFld(i,j) = uVel(i,j,k,bi,bj)
vFld(i,j) = vVel(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
uTrans(i,j) = uFld(i,j)*xA(i,j)*rhoFacC(k)
vTrans(i,j) = vFld(i,j)*yA(i,j)*rhoFacC(k)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_DIFFUSIVITY(
I bi,bj,iMin,iMax,jMin,jMax,k,
I maskUp,
O KappaRT,KappaRS,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER bi,bj,iMin,iMax,jMin,jMax,K
Real*8 maskUp(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 KappaRT(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 KappaRS(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
INTEGER i,j
Real*8 KbryanLewis79
IF ( .NOT. UseKPP ) THEN
KbryanLewis79=diffKrBL79surf+(diffKrBL79deep-diffKrBL79surf)
& *(atan(-(rF(k)-diffKrBL79Ho)/diffKrBL79scl)/PI+0.5d0)
DO j = 1-Oly, sNy+Oly
DO i = 1-Olx, sNx+Olx
KappaRT(i,j) =
& IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
& + diffKrNrT(k)
& + KbryanLewis79
ENDDO
ENDDO
DO j = 1-Oly, sNy+Oly
DO i = 1-Olx, sNx+Olx
KappaRS(i,j) =
& IVDConvCount(i,j,k,bi,bj)*ivdc_kappa
& + diffKrNrS(k)
& + KbryanLewis79
ENDDO
ENDDO
ENDIF
IF (useGMRedi) THEN
CALL GMREDI_CALC_DIFF(
I bi,bj,iMin,iMax,jMin,jMax,k,1,
U KappaRT,
I GAD_TEMPERATURE,myThid)
CALL GMREDI_CALC_DIFF(
I bi,bj,iMin,iMax,jMin,jMax,k,1,
U KappaRS,
I GAD_SALINITY,myThid)
ENDIF
DO j = 1-Oly, sNy+Oly
DO i = 1-Olx, sNx+Olx
KappaRT(i,j) = maskUp(i,j)*KappaRT(i,j)
KappaRS(i,j) = maskUp(i,j)*KappaRS(i,j)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_DIV_GHAT(
I bi,bj,k,
U cg2d_b, cg3d_b,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER bi,bj
INTEGER k
Real*8 cg2d_b(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 cg3d_b(1)
INTEGER myThid
INTEGER i,j
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 pf (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
DO j=1,sNy+1
DO i=1,sNx+1
xA(i,j) = dyG(i,j,bi,bj)*deepFacC(k)
& *drF(k)*hFacW(i,j,k,bi,bj)*rhoFacC(k)
yA(i,j) = dxG(i,j,bi,bj)*deepFacC(k)
& *drF(k)*hFacS(i,j,k,bi,bj)*rhoFacC(k)
ENDDO
ENDDO
IF (implicDiv2Dflow.EQ.1.) THEN
DO j=1,sNy
DO i=1,sNx+1
pf(i,j) = xA(i,j)*gU(i,j,k,bi,bj) / deltaTmom
ENDDO
ENDDO
ELSEIF (exactConserv) THEN
DO j=1,sNy
DO i=1,sNx+1
pf(i,j) = implicDiv2Dflow
& *xA(i,j)*gU(i,j,k,bi,bj) / deltaTmom
ENDDO
ENDDO
ELSE
DO j=1,sNy
DO i=1,sNx+1
pf(i,j) = ( implicDiv2Dflow * gU(i,j,k,bi,bj)
& + (1.d0-implicDiv2Dflow)* uVel(i,j,k,bi,bj)
& ) * xA(i,j) / deltaTmom
ENDDO
ENDDO
ENDIF
DO j=1,sNy
DO i=1,sNx
cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj) +
& pf(i+1,j)-pf(i,j)
ENDDO
ENDDO
IF (implicDiv2Dflow.EQ.1.) THEN
DO j=1,sNy+1
DO i=1,sNx
pf(i,j) = yA(i,j)*gV(i,j,k,bi,bj) / deltatmom
ENDDO
ENDDO
ELSEIF (exactConserv) THEN
DO j=1,sNy+1
DO i=1,sNx
pf(i,j) = implicDiv2Dflow
& *yA(i,j)*gV(i,j,k,bi,bj) / deltatmom
ENDDO
ENDDO
ELSE
DO j=1,sNy+1
DO i=1,sNx
pf(i,j) = ( implicDiv2Dflow * gV(i,j,k,bi,bj)
& + (1.d0-implicDiv2Dflow)* vVel(i,j,k,bi,bj)
& ) * yA(i,j) / deltaTmom
ENDDO
ENDDO
ENDIF
DO j=1,sNy
DO i=1,sNx
cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj) +
& pf(i,j+1)-pf(i,j)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_GRAD_PHI_HYD(
I k, bi, bj, iMin,iMax, jMin,jMax,
I phiHydC, alphRho, tFld, sFld,
O dPhiHydX, dPhiHydY,
I myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER k, bi,bj, iMin,iMax, jMin,jMax
Real*8 phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 alphRho(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 myTime
INTEGER myIter, myThid
INTEGER i,j
Real*8 varLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
IF (.TRUE.) THEN
DO j=jMin,jMax
DO i=iMin,iMax
varLoc(i,j) = phiHydC(i,j)+phi0surf(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
dPhiHydX(i,j) = 0.d0
dPhiHydY(i,j) = 0.d0
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin+1,iMax
dPhiHydX(i,j) = recip_dxC(i,j,bi,bj)*recip_deepFacC(k)
& *( varLoc(i,j)-varLoc(i-1,j) )*recip_rhoFacC(k)
ENDDO
ENDDO
DO j=jMin+1,jMax
DO i=iMin,iMax
dPhiHydY(i,j) = recip_dyC(i,j,bi,bj)*recip_deepFacC(k)
& *( varLoc(i,j)-varLoc(i,j-1) )*recip_rhoFacC(k)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_GRAD_PHI_SURF( bi, bj, iMin, iMax, jMin, jMax,
I etaFld,
O phiSurfX, phiSurfY,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,iMin,iMax,jMin,jMax
Real*8 etaFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phiSurfX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 phiSurfY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
INTEGER i,j
DO j=jMin,jMax
DO i=iMin,iMax
phiSurfX(i,j)=recip_dxC(i,j,bi,bj)*
& ( Bo_surf(i,j,bi,bj)*etaFld(i,j,bi,bj)
& - Bo_surf(i-1,j,bi,bj)*etaFld(i-1,j,bi,bj) )
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
phiSurfY(i,j)=recip_dyC(i,j,bi,bj)*
& ( Bo_surf(i,j,bi,bj)*etaFld(i,j,bi,bj)
& - Bo_surf(i,j-1,bi,bj)*etaFld(i,j-1,bi,bj) )
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_GS(
I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
I xA, yA, maskUp, uFld, vFld, wFld,
I uTrans, vTrans, rTrans, rTransKp1,
I KappaRS,
U fVerS,
I myTime,myIter,myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER maxNoChkptLev
PARAMETER ( maxNoChkptLev = 2 )
COMMON / RESTART_I /
& nCheckLev,
& tempStartAB, saltStartAB,
& mom_StartAB, nHydStartAB,
& dPhiNHstatus
INTEGER nCheckLev
INTEGER tempStartAB
INTEGER saltStartAB
INTEGER mom_StartAB
INTEGER nHydStartAB
INTEGER dPhiNHstatus
COMMON / RESTART_C /
& checkPtSuff
CHARACTER*(5) checkPtSuff(maxNoChkptLev)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k,kUp,kDown,kM1
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskUp (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KappaRS(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fVerS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 myTime
INTEGER myIter
INTEGER myThid
LOGICAL calcAdvection
INTEGER iterNb
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
itdkey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
kkey = (itdkey-1)*Nr + k
fVerS(1,1,kDown) = fVerS(1,1,kDown)
calcAdvection = saltAdvection .AND. .NOT.saltMultiDimAdvec
iterNb = myIter
IF (staggerTimeStep) iterNb = myIter - 1
CALL GAD_CALC_RHS(
I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
I xA, yA, maskUp, uFld, vFld, wFld,
I uTrans, vTrans, rTrans, rTransKp1,
I diffKhS, diffK4S, KappaRS, gsNm1, salt, dTtracerLev,
I GAD_SALINITY, saltAdvScheme, saltVertAdvScheme,
I calcAdvection, saltImplVertAdv, AdamsBashforth_S,
I useGMRedi, useKPP,
U fVerS, gS,
I myTime, myIter, myThid )
IF ( saltForcing .AND. tracForcingOutAB.NE.1 )
& CALL EXTERNAL_FORCING_S(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
IF ( AdamsBashforthGs ) THEN
CALL ADAMS_BASHFORTH2(
I bi, bj, k,
U gS, gsNm1,
I saltStartAB, iterNb, myThid )
ENDIF
IF ( saltForcing .AND. tracForcingOutAB.EQ.1 )
& CALL EXTERNAL_FORCING_S(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_GT(
I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
I xA, yA, maskUp, uFld, vFld, wFld,
I uTrans, vTrans, rTrans, rTransKp1,
I KappaRT,
U fVerT,
I myTime,myIter,myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER maxNoChkptLev
PARAMETER ( maxNoChkptLev = 2 )
COMMON / RESTART_I /
& nCheckLev,
& tempStartAB, saltStartAB,
& mom_StartAB, nHydStartAB,
& dPhiNHstatus
INTEGER nCheckLev
INTEGER tempStartAB
INTEGER saltStartAB
INTEGER mom_StartAB
INTEGER nHydStartAB
INTEGER dPhiNHstatus
COMMON / RESTART_C /
& checkPtSuff
CHARACTER*(5) checkPtSuff(maxNoChkptLev)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k,kUp,kDown,kM1
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskUp (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KappaRT(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fVerT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 myTime
INTEGER myIter
INTEGER myThid
LOGICAL calcAdvection
INTEGER iterNb
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
itdkey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
kkey = (itdkey-1)*Nr + k
fVerT(1,1,kDown) = fVerT(1,1,kDown)
calcAdvection = tempAdvection .AND. .NOT.tempMultiDimAdvec
iterNb = myIter
IF (staggerTimeStep) iterNb = myIter -1
CALL GAD_CALC_RHS(
I bi,bj,iMin,iMax,jMin,jMax,k,kM1,kUp,kDown,
I xA, yA, maskUp, uFld, vFld, wFld,
I uTrans, vTrans, rTrans, rTransKp1,
I diffKhT, diffK4T, KappaRT, gtNm1, theta, dTtracerLev,
I GAD_TEMPERATURE, tempAdvScheme, tempVertAdvScheme,
I calcAdvection, tempImplVertAdv, AdamsBashforth_T,
I useGMRedi, useKPP,
U fVerT, gT,
I myTime, myIter, myThid )
IF ( tempForcing .AND. tracForcingOutAB.NE.1 )
& CALL EXTERNAL_FORCING_T(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
IF ( AdamsBashforthGt ) THEN
CALL ADAMS_BASHFORTH2(
I bi, bj, k,
U gT, gtNm1,
I tempStartAB, iterNb, myThid )
ENDIF
IF ( tempForcing .AND. tracForcingOutAB.EQ.1 )
& CALL EXTERNAL_FORCING_T(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_IVDC(
I bi, bj, iMin, iMax, jMin, jMax, K,
I rhoKm1, rhoKp1,
I myTime,myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,iMin,iMax,jMin,jMax,K
Real*8 rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER i,j
DO j=jMin,jmax
DO i=iMin,imax
IF ( hFacC(i,j,k,bi,bj) .GT. 0. .AND.
& (rhokm1(i,j)-rhokp1(i,j))*rkSign*gravitySign.GT.0. ) THEN
IVDConvCount(i,j,k,bi,bj) = 1.d0
ELSE
IVDConvCount(i,j,k,bi,bj) = 0.d0
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_PHI_HYD(
I bi, bj, iMin, iMax, jMin, jMax, k,
I tFld, sFld,
U phiHydF,
O phiHydC, dPhiHydX, dPhiHydY,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER bi,bj,iMin,iMax,jMin,jMax,k
Real*8 tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 myTime
INTEGER myIter, myThid
INTEGER i,j
Real*8 zero, one, half
Real*8 alphaRho(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dRlocM,dRlocP, ddRloc, locAlpha
Real*8 ddPIm, ddPIp, rec_dRm, rec_dRp
Real*8 surfPhiFac
PARAMETER ( zero= 0.d0 , one= 1.d0 , half= .5d0 )
LOGICAL useDiagPhiRlow, addSurfPhiAnom
useDiagPhiRlow = .TRUE.
addSurfPhiAnom = select_rStar.EQ.0 .AND. nonlinFreeSurf.GT.3
surfPhiFac = 0.
IF (addSurfPhiAnom) surfPhiFac = 1.
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
ikey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
IF (k.EQ.1) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
phiHydF(i,j) = 0.
ENDDO
ENDDO
ENDIF
IF ( buoyancyRelation .EQ. 'OCEANIC' ) THEN
CADJ GENERAL
IF ( implicitIntGravWave .OR. myIter.LT.0 ) THEN
kkey = (ikey-1)*Nr + k
CADJ STORE tFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte,
CADJ & kind = isbyte
CADJ STORE sFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte,
CADJ & kind = isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, k,
I tFld(1-OLx,1-OLy,k,bi,bj),
I sFld(1-OLx,1-OLy,k,bi,bj),
O alphaRho,
I k, bi, bj, myThid )
ELSE
DO j=jMin,jMax
DO i=iMin,iMax
alphaRho(i,j) = rhoInSitu(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
IF (quasiHydrostatic) THEN
CALL MOM_QUASIHYDROSTATIC(bi,bj,k,uVel,vVel,alphaRho,myThid)
ENDIF
IF (integr_GeoPot.EQ.1) THEN
DO j=jMin,jMax
DO i=iMin,iMax
C
phiHydC(i,j)=phiHydF(i,j)
& + half*drF(k)*gravity*alphaRho(i,j)*recip_rhoConst
phiHydF(i,j)=phiHydF(i,j)
& + drF(k)*gravity*alphaRho(i,j)*recip_rhoConst
ENDDO
ENDDO
ELSE
dRlocM=half*drC(k)
IF (k.EQ.1) dRlocM=rF(k)-rC(k)
IF (k.EQ.Nr) THEN
dRlocP=rC(k)-rF(k+1)
ELSE
dRlocP=half*drC(k+1)
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
C
phiHydC(i,j)=phiHydF(i,j)
& +dRlocM*gravity*alphaRho(i,j)*recip_rhoConst
phiHydF(i,j)=phiHydC(i,j)
& +dRlocP*gravity*alphaRho(i,j)*recip_rhoConst
ENDDO
ENDDO
ENDIF
ELSEIF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN
CADJ GENERAL
IF ( implicitIntGravWave .OR. myIter.LT.0 ) THEN
kkey = (ikey-1)*Nr + k
CADJ STORE tFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte,
CADJ & kind = isbyte
CADJ STORE sFld (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte,
CADJ & kind = isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, k,
I tFld(1-OLx,1-OLy,k,bi,bj),
I sFld(1-OLx,1-OLy,k,bi,bj),
O alphaRho,
I k, bi, bj, myThid )
CADJ STORE alphaRho (:,:) = comlev1_bibj_k, key=kkey, byte=isbyte,
CADJ & kind = isbyte
ELSE
DO j=jMin,jMax
DO i=iMin,iMax
alphaRho(i,j) = rhoInSitu(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
locAlpha=alphaRho(i,j)+rhoConst
alphaRho(i,j)=maskC(i,j,k,bi,bj)*
& (one/locAlpha - recip_rhoConst)
ENDDO
ENDDO
IF (integr_GeoPot.EQ.1) THEN
DO j=jMin,jMax
DO i=iMin,iMax
C
IF (k.EQ.kSurfC(i,j,bi,bj)) THEN
ddRloc = Ro_surf(i,j,bi,bj)-rC(k)
phiHydC(i,j) = ddRloc*alphaRho(i,j)
ELSE
phiHydC(i,j) = phiHydF(i,j) + half*drF(k)*alphaRho(i,j)
ENDIF
phiHydF(i,j) = phiHydC(i,j) + half*drF(k)*alphaRho(i,j)
ENDDO
ENDDO
ELSE
dRlocM=half*drC(k)
IF (k.EQ.1) dRlocM=rF(k)-rC(k)
IF (k.EQ.Nr) THEN
dRlocP=rC(k)-rF(k+1)
ELSE
dRlocP=half*drC(k+1)
ENDIF
rec_dRm = one/(rF(k)-rC(k))
rec_dRp = one/(rC(k)-rF(k+1))
DO j=jMin,jMax
DO i=iMin,iMax
IF (k.EQ.kSurfC(i,j,bi,bj)) THEN
ddRloc = Ro_surf(i,j,bi,bj)-rC(k)
phiHydC(i,j) =( MAX(zero,ddRloc)*rec_dRm*dRlocM
& +MIN(zero,ddRloc)*rec_dRp*dRlocP
& )*alphaRho(i,j)
ELSE
phiHydC(i,j) = phiHydF(i,j) + dRlocM*alphaRho(i,j)
ENDIF
phiHydF(i,j) = phiHydC(i,j) + dRlocP*alphaRho(i,j)
ENDDO
ENDDO
ENDIF
ELSEIF ( buoyancyRelation .EQ. 'ATMOSPHERIC' ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
alphaRho(i,j)=maskC(i,j,k,bi,bj)
& *( tFld(i,j,k,bi,bj)*(sFld(i,j,k,bi,bj)*atm_Rq+one)
& -tRef(k) )
ENDDO
ENDDO
IF (integr_GeoPot.EQ.0) THEN
IF (k.EQ.1) THEN
ddPIm=atm_Cp*( ((rF( k )/atm_Po)**atm_kappa)
& -((rC( k )/atm_Po)**atm_kappa) )
ELSE
ddPIm=atm_Cp*( ((rC(k-1)/atm_Po)**atm_kappa)
& -((rC( k )/atm_Po)**atm_kappa) )*half
ENDIF
IF (k.EQ.Nr) THEN
ddPIp=atm_Cp*( ((rC( k )/atm_Po)**atm_kappa)
& -((rF(k+1)/atm_Po)**atm_kappa) )
ELSE
ddPIp=atm_Cp*( ((rC( k )/atm_Po)**atm_kappa)
& -((rC(k+1)/atm_Po)**atm_kappa) )*half
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
phiHydC(i,j) = phiHydF(i,j) +ddPIm*alphaRho(i,j)
phiHydF(i,j) = phiHydC(i,j) +ddPIp*alphaRho(i,j)
ENDDO
ENDDO
ELSEIF (integr_GeoPot.EQ.1) THEN
ddPIm=atm_Cp*( ((rF( k )/atm_Po)**atm_kappa)
& -((rC( k )/atm_Po)**atm_kappa) )
ddPIp=atm_Cp*( ((rC( k )/atm_Po)**atm_kappa)
& -((rF(k+1)/atm_Po)**atm_kappa) )
DO j=jMin,jMax
DO i=iMin,iMax
IF (k.EQ.kSurfC(i,j,bi,bj)) THEN
ddRloc = Ro_surf(i,j,bi,bj)-rC(k)
phiHydC(i,j) = ddRloc*recip_drF(k)*2.d0
& *ddPIm*alphaRho(i,j)
ELSE
phiHydC(i,j) = phiHydF(i,j) +ddPIm*alphaRho(i,j)
ENDIF
phiHydF(i,j) = phiHydC(i,j) +ddPIp*alphaRho(i,j)
ENDDO
ENDDO
ELSEIF ( integr_GeoPot.EQ.2
& .OR. integr_GeoPot.EQ.3 ) THEN
IF (k.EQ.1) THEN
ddPIm=atm_Cp*( ((rF( k )/atm_Po)**atm_kappa)
& -((rC( k )/atm_Po)**atm_kappa) )
ELSE
ddPIm=atm_Cp*( ((rC(k-1)/atm_Po)**atm_kappa)
& -((rC( k )/atm_Po)**atm_kappa) )*half
ENDIF
IF (k.EQ.Nr) THEN
ddPIp=atm_Cp*( ((rC( k )/atm_Po)**atm_kappa)
& -((rF(k+1)/atm_Po)**atm_kappa) )
ELSE
ddPIp=atm_Cp*( ((rC( k )/atm_Po)**atm_kappa)
& -((rC(k+1)/atm_Po)**atm_kappa) )*half
ENDIF
rec_dRm = one/(rF(k)-rC(k))
rec_dRp = one/(rC(k)-rF(k+1))
DO j=jMin,jMax
DO i=iMin,iMax
IF (k.EQ.kSurfC(i,j,bi,bj)) THEN
ddRloc = Ro_surf(i,j,bi,bj)-rC(k)
phiHydC(i,j) =( MAX(zero,ddRloc)*rec_dRm*ddPIm
& +MIN(zero,ddRloc)*rec_dRp*ddPIp )
& *alphaRho(i,j)
ELSE
phiHydC(i,j) = phiHydF(i,j) +ddPIm*alphaRho(i,j)
ENDIF
phiHydF(i,j) = phiHydC(i,j) +ddPIp*alphaRho(i,j)
ENDDO
ENDDO
ELSE
STOP 'CALC_PHI_HYD: Bad integr_GeoPot option !'
ENDIF
ELSE
STOP 'CALC_PHI_HYD: Bad value of buoyancyRelation !'
ENDIF
IF (useDiagPhiRlow) THEN
CALL DIAGS_PHI_RLOW(
I k, bi, bj, iMin,iMax, jMin,jMax,
I phiHydF, phiHydC, alphaRho, tFld, sFld,
I myTime, myIter, myThid)
ENDIF
CALL DIAGS_PHI_HYD(
I k, bi, bj, iMin,iMax, jMin,jMax,
I phiHydC,
I myTime, myIter, myThid)
IF (momPressureForcing) THEN
CALL CALC_GRAD_PHI_HYD(
I k, bi, bj, iMin,iMax, jMin,jMax,
I phiHydC, alphaRho, tFld, sFld,
O dPhiHydX, dPhiHydY,
I myTime, myIter, myThid)
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_SURF_DR(etaFld,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 etaFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_VISCOSITY(
I bi,bj, iMin,iMax,jMin,jMax,
O KappaRU, KappaRV,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER iMin,iMax,jMin,jMax
INTEGER bi,bj
Real*8 KappaRU(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 KappaRV(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
INTEGER myThid
INTEGER i,j,k
DO k = 1,Nr
DO j = 1-Oly, sNy+Oly
DO i = 1-Olx, sNx+Olx
KappaRU(i,j,k) = viscArNr(k)
KappaRV(i,j,k) = viscArNr(k)
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_WSURF_TR(thetaFld, saltFld, wVelFld,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 thetaFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 saltFld (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 wVelFld (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER i,j,bi,bj,ks
Real*8 wT_Mean, wS_Mean
Real*8 wT_Tile(nSx,nSy)
Real*8 wS_Tile(nSx,nSy)
TsurfCor= 0.
SsurfCor= 0.
wT_Mean = 0.
wS_Mean = 0.
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
wT_Tile(bi,bj) = 0.
wS_Tile(bi,bj) = 0.
DO j=1,sNy
DO i=1,sNx
ks = ksurfC(i,j,bi,bj)
IF (ks.LE.Nr) THEN
wT_Tile(bi,bj) = wT_Tile(bi,bj)
& + rA(i,j,bi,bj)*wVelFld(i,j,ks,bi,bj)
& *thetaFld(i,j,ks,bi,bj)
wS_Tile(bi,bj) = wS_Tile(bi,bj)
& + rA(i,j,bi,bj)*wVelFld(i,j,ks,bi,bj)
& *saltFld(i,j,ks,bi,bj)
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
CALL GLOBAL_SUM_TILE_RL( wT_Tile, wT_Mean, myThid )
CALL GLOBAL_SUM_TILE_RL( wS_Tile, wS_Mean, myThid )
IF ( globalArea.GT.0. ) THEN
IF ( myThid .EQ. 1 ) THEN
TsurfCor = wT_Mean / globalArea
SsurfCor = wS_Mean / globalArea
ENDIF
ENDIF
CALL BARRIER(myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CG2D_NSA(
I cg2d_b,
U cg2d_x,
O firstResidual,
O lastResidual,
U numIters,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
COMMON /CG2D_I_L/ cg2dNormaliseRHS
LOGICAL cg2dNormaliseRHS
COMMON /CG2D_I_R/
& aW2d, aS2d, aC2d,
& pW, pS, pC,
& cg2dNorm, cg2dTolerance
Real*8 aW2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 aS2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 aC2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 cg2dNorm, cg2dTolerance
COMMON /CG2D_I_WK_R/
& cg2d_q, cg2d_r, cg2d_s
Real*8 cg2d_q(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
Real*8 cg2d_r(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
Real*8 cg2d_s(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
Real*8 cg2d_b(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 cg2d_x(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 firstResidual
Real*8 lastResidual
INTEGER numIters
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CONVECTIVE_ADJUSTMENT(
I bi, bj, myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
EXTERNAL DIFFERENT_MULTIPLE
LOGICAL DIFFERENT_MULTIPLE
INTEGER bi,bj
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER iMin,iMax,jMin,jMax
INTEGER i, j, K, kTop, kBottom, kDir, deltaK
Real*8 rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 weightA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 weightB(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
IF ( DIFFERENT_MULTIPLE(cAdjFreq,myTime,deltaTClock)
& ) THEN
iMin=1-Olx
iMax=sNx+Olx
jMin=1-Oly
jMax=sNy+Oly
kTop = 0
kBottom = 0
kDir = 0
deltaK = 0
DO K=1,Nr
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
ConvectCount(i,j,K) = 0.
ENDDO
ENDDO
ENDDO
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
ikey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
IF ( rkSign*gravitySign .GT. 0. ) THEN
kTop = 2
kBottom = Nr
kDir = 1
deltaK = -1
ELSE
kTop = Nr
kBottom = 2
kDir = -1
deltaK = 0
ENDIF
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte,
CADJ & kind = isbyte
CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=ikey, byte=isbyte,
CADJ & kind = isbyte
CADJ STORE convectcount(:,:,:) = comlev1_bibj, key=ikey, byte=isbyte,
CADJ & kind = isbyte
DO K=kTop,kBottom,kDir
kkey = (ikey-1)*Nr + k
CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k,key=kkey,byte=isbyte,
CADJ & kind = isbyte
CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k,key=kkey,byte=isbyte,
CADJ & kind = isbyte
CADJ STORE convectcount(:,:,k-1) = comlev1_bibj_k,key=kkey,byte=isbyte,
CADJ & kind = isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, K+deltaK,
I theta(1-OLx,1-OLy,K-1,bi,bj),
I salt (1-OLx,1-OLy,K-1,bi,bj),
O rhoKm1,
I K-1, bi, bj, myThid )
CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte,
CADJ & kind = isbyte
CADJ STORE salt (:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte,
CADJ & kind = isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, K+deltaK,
I theta(1-OLx,1-OLy,K,bi,bj),
I salt (1-OLx,1-OLy,K,bi,bj),
O rhoK,
I K, bi, bj, myThid )
CADJ STORE rhoKm1(:,:) = comlev1_bibj_k, key = kkey, byte = isbyte,
CADJ & kind = isbyte
CADJ STORE rhoK (:,:) = comlev1_bibj_k, key = kkey, byte = isbyte,
CADJ & kind = isbyte
CALL CONVECTIVE_WEIGHTS(
I bi,bj,K,rhoKm1,rhoK,
O weightA,weightB,ConvectCount,
I myThid)
CALL CONVECTIVELY_MIXTRACER(
I bi,bj,k,weightA,weightB,
U theta,
I myThid)
CALL CONVECTIVELY_MIXTRACER(
I bi,bj,k,weightA,weightB,
U salt,
I myThid)
ENDDO
IF (myIter.NE.nIter0 .AND. taveFreq.GT.0.) THEN
CALL TIMEAVE_CUMUL_1T(ConvectCountTave, ConvectCount,
I Nr, deltaTclock, bi, bj, myThid)
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CONVECTIVE_ADJUSTMENT_INI(
I bi, bj, myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
EXTERNAL DIFFERENT_MULTIPLE
LOGICAL DIFFERENT_MULTIPLE
INTEGER bi,bj
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER iMin,iMax,jMin,jMax
INTEGER i, j, K, kTop, kBottom, kDir, deltaK
Real*8 rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 weightA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 weightB(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
IF ( DIFFERENT_MULTIPLE(cAdjFreq,myTime,deltaTClock)
& ) THEN
iMin=1-Olx
iMax=sNx+Olx
jMin=1-Oly
jMax=sNy+Oly
kTop = 0
kBottom = 0
kDir = 0
deltaK = 0
DO K=1,Nr
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
ConvectCount(i,j,k) = 0.
ENDDO
ENDDO
ENDDO
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = 0
ikey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
IF ( rkSign*gravitySign .GT. 0. ) THEN
kTop = 2
kBottom = Nr
kDir = 1
deltaK = -1
ELSE
kTop = Nr
kBottom = 2
kDir = -1
deltaK = 0
ENDIF
CADJ STORE theta(:,:,:,bi,bj) = tapelev_ini_bibj,
CADJ & key=ikey, byte=isbyte
CADJ STORE salt (:,:,:,bi,bj) = tapelev_ini_bibj,
CADJ & key=ikey, byte=isbyte
CADJ STORE convectcount(:,:,:) = tapelev_ini_bibj,
CADJ & key=ikey, byte=isbyte
DO K=kTop,kBottom,kDir
kkey = (ikey-1)*Nr + k
CADJ STORE theta(:,:,k-1,bi,bj) = tapelev_ini_bibj_k,
CADJ & key=kkey, byte=isbyte
CADJ STORE salt (:,:,k-1,bi,bj) = tapelev_ini_bibj_k,
CADJ & key=kkey, byte=isbyte
CADJ STORE convectcount(:,:,k-1) = tapelev_ini_bibj_k,
CADJ & key=kkey, byte=isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, K+deltaK,
I theta(1-OLx,1-OLy,K-1,bi,bj),
I salt (1-OLx,1-OLy,K-1,bi,bj),
O rhoKm1,
I K-1, bi, bj, myThid )
CADJ STORE theta(:,:,k,bi,bj) = tapelev_ini_bibj_k,
CADJ & key = kkey, byte = isbyte
CADJ STORE salt (:,:,k,bi,bj) = tapelev_ini_bibj_k,
CADJ & key = kkey, byte = isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, K+deltaK,
I theta(1-OLx,1-OLy,K,bi,bj),
I salt (1-OLx,1-OLy,K,bi,bj),
O rhoK,
I K, bi, bj, myThid )
CADJ STORE rhoKm1(:,:) = tapelev_ini_bibj_k, key=kkey, byte=isbyte
CADJ STORE rhoK (:,:) = tapelev_ini_bibj_k, key=kkey, byte=isbyte
CALL CONVECTIVE_WEIGHTS(
I bi,bj,K,rhoKm1,rhoK,
O weightA,weightB,ConvectCount,
I myThid)
CALL CONVECTIVELY_MIXTRACER(
I bi,bj,k,weightA,weightB,
U theta,
I myThid)
CALL CONVECTIVELY_MIXTRACER(
I bi,bj,k,weightA,weightB,
U salt,
I myThid)
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CONVECTIVE_WEIGHTS(
I bi,bj,k,rhoKm1,rhoK,
O weightA,weightB,ConvectCount,
I myThid)
C
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoK(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 weightA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 weightB(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 ConvectCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER myThid
INTEGER i,j
Real*8 dS,d1,d2
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( hFacC(i,j,k-1,bi,bj)
& *hFacC(i,j,k,bi,bj) .GT. 0.
& .AND. (rhokm1(i,j)-rhok(i,j))*rkSign*gravitySign .GT. 0.
& ) THEN
d1 = hFacC(i,j,k-1,bi,bj)*drF(k-1)
d2 = hFacC(i,j, k ,bi,bj)*drF( k )
dS = d1+d2
weightA(i,j) = d2/dS
weightB(i,j) = d1/dS
ConvectCount(i,j,k) = ConvectCount(i,j,k) + 1.
ELSE
weightA(i,j) = 0.
weightB(i,j) = 0.
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CONVECTIVELY_MIXTRACER(
I bi,bj,k,weightA,weightB,
U Tracer,
I myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER bi,bj,k
Real*8 weightA(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 weightB(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 Tracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER i,j
Real*8 delTrac
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
delTrac=Tracer(i,j,k,bi,bj)-Tracer(i,j,k-1,bi,bj)
Tracer(i,j,k-1,bi,bj)=Tracer(i,j,k-1,bi,bj)
& +weightA(i,j)*delTrac
Tracer(i,j,k,bi,bj)=Tracer(i,j,k,bi,bj)
& -weightB(i,j)*delTrac
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CORRECTION_STEP( bi, bj, iMin, iMax, jMin, jMax,
I k, phiSurfX, phiSurfY,
I myTime, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER bi,bj
INTEGER iMin,iMax,jMin,jMax
INTEGER k
Real*8 myTime
INTEGER myThid
INTEGER i,j
Real*8 psFac, nhFac
psFac = pfFacMom*implicSurfPress
& *recip_deepFacC(k)*recip_rhoFacC(k)
IF ( use3Dsolver ) THEN
nhFac = pfFacMom*implicitNHPress
& *recip_deepFacC(k)*recip_rhoFacC(k)
ELSE
nhFac = 0.
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
uVel(i,j,k,bi,bj)=( gU(i,j,k,bi,bj)
& -deltaTmom*psFac*phiSurfX(i,j)
& )*maskW(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
vVel(i,j,k,bi,bj)=( gV(i,j,k,bi,bj)
& -deltaTmom*psFac*phiSurfY(i,j)
& )*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CYCLE_TRACER(
I bi, bj,
U tracer, gTracer,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj
Real*8 tracer (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter, myThid
INTEGER i,j,k
DO k=1,Nr
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
tracer(i,j,k,bi,bj)=gTracer(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE DIAGS_PHI_HYD(
I k, bi, bj, iMin,iMax, jMin,jMax,
I phiHydC,
I myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER k, bi,bj, iMin,iMax, jMin,jMax
Real*8 phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 myTime
INTEGER myIter, myThid
INTEGER i,j
DO j=jMin,jMax
DO i=iMin,iMax
totPhiHyd(i,j,k,bi,bj) = phiHydC(i,j)
& + Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj)
& + phi0surf(i,j,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE DIAGS_PHI_RLOW(
I k, bi, bj, iMin,iMax, jMin,jMax,
I phiHydF, phiHydC, alphRho, tFld, sFld,
I myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER k, bi,bj, iMin,iMax, jMin,jMax
Real*8 phiHydF(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 phiHydC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 alphRho(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 tFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter, myThid
INTEGER i,j
Real*8 zero, one, half
Real*8 ddRloc, ratioRm, ratioRp
PARAMETER ( zero= 0.d0 , one= 1.d0 , half= .5d0 )
IF ( usingZCoords ) THEN
IF ( k.EQ.1 ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
phiHydLow(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
ENDIF
IF (integr_GeoPot.EQ.1) THEN
DO j=jMin,jMax
DO i=iMin,iMax
IF ( k .EQ. kLowC(i,j,bi,bj) ) THEN
ddRloc = rC(k)-R_low(i,j,bi,bj)
phiHydLow(i,j,bi,bj) = phiHydC(i,j)
& + ddRloc*gravity*alphRho(i,j)*recip_rhoConst
ENDIF
ENDDO
ENDDO
ELSE
ratioRm = one
ratioRp = one
IF (k.GT.1 ) ratioRm = half*drC(k)/(rF(k)-rC(k))
IF (k.LT.Nr) ratioRp = half*drC(k+1)/(rC(k)-rF(k+1))
DO j=jMin,jMax
DO i=iMin,iMax
IF ( k .EQ. kLowC(i,j,bi,bj) ) THEN
ddRloc = rC(k)-R_low(i,j,bi,bj)
phiHydLow(i,j,bi,bj) = phiHydC(i,j)
& +( MIN(zero,ddRloc)*ratioRm
& +MAX(zero,ddRloc)*ratioRp
& )*gravity*alphRho(i,j)*recip_rhoConst
ENDIF
ENDDO
ENDDO
ENDIF
ENDIF
IF ( k.EQ.Nr ) THEN
IF ( usingPCoords ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
phiHydLow(i,j,bi,bj) = phiHydF(i,j)
ENDDO
ENDDO
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
phiHydLow(i,j,bi,bj) = phiHydLow(i,j,bi,bj)
& + Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj)
& + phi0surf(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE DIAGS_RHO_L(
I k, bi, bj,
I rhoK, rhoKm1, wFld,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER k, bi, bj
Real*8 rhoK (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoKm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter, myThid
RETURN
END
SUBROUTINE DIAGS_RHO_G(
I rho3d, uFld, vFld,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rho3d(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter, myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE DO_ATMOSPHERIC_PHYS(myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 myTime
INTEGER myIter
INTEGER myThid
IF ( debugLevel.GE.debLevB )
& CALL DEBUG_ENTER('DO_ATMOSPHERIC_PHYS',myThid)
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE('DO_ATMOSPHERIC_PHYS',myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE DO_FIELDS_BLOCKING_EXCHANGES(myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
IF ( .NOT.useOffLine ) THEN
IF ( .NOT.staggerTimeStep .OR. .NOT.useMultiDimAdvec ) THEN
CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
IF ( .NOT.implicitIntGravWave )
& CALL EXCH_XYZ_RL ( wVel , myThid )
ENDIF
IF ( .NOT.implicitIntGravWave ) THEN
CALL EXCH_XYZ_RL ( theta, myThid )
CALL EXCH_XYZ_RL ( salt , myThid )
ENDIF
IF ( tempSOM_Advection .OR. saltSOM_Advection )
& CALL GAD_SOM_EXCHANGES( myThid )
CALL EXCH_UV_DGRID_3D_RL( uVelD,vVelD, .TRUE., Nr, myThid )
IF ( useDynP_inEos_Zc )
& CALL EXCH_XYZ_RL ( totPhiHyd , myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE DO_OCEANIC_PHYS(myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 rhoKp1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoKm1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 sigmaX (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 sigmaY (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
Real*8 sigmaR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
INTEGER iMin, iMax
INTEGER jMin, jMax
INTEGER bi, bj
INTEGER i, j, k
INTEGER doDiagsRho
itdkey = 1
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_ENTER('DO_OCEANIC_PHYS',myThid)
doDiagsRho = 0
CADJ STORE sst, sss = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE qsw = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE theta = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
IF ( allowFreezing ) THEN
CALL FREEZE_SURFACE( myTime, myIter, myThid )
ENDIF
CHPF$ INDEPENDENT
DO bj=myByLo(myThid),myByHi(myThid)
CHPF$ INDEPENDENT
DO bi=myBxLo(myThid),myBxHi(myThid)
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
itdkey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
rhoKm1 (i,j) = 0.d0
rhoKp1 (i,j) = 0.d0
ENDDO
ENDDO
DO k=1,Nr
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
sigmaX(i,j,k) = 0.d0
sigmaY(i,j,k) = 0.d0
sigmaR(i,j,k) = 0.d0
IVDConvCount(i,j,k,bi,bj) = 0.
Kwx(i,j,k,bi,bj) = 0.d0
Kwy(i,j,k,bi,bj) = 0.d0
Kwz(i,j,k,bi,bj) = 0.d0
Kux(i,j,k,bi,bj) = 0.d0
Kvy(i,j,k,bi,bj) = 0.d0
Kuz(i,j,k,bi,bj) = 0.d0
Kvz(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
iMin = 1-OLx
iMax = sNx+OLx
jMin = 1-OLy
jMax = sNy+OLy
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CADJ STORE totphihyd(:,:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_MSG('ENTERING UPWARD K LOOP',myThid)
DO k=Nr,1,-1
C? Patrick, is this formula correct now that we change the loop range?
C? Do we still need this?
kkey = (itdkey-1)*Nr + k
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('FIND_RHO_2D',myThid)
IF ( fluidIsWater ) THEN
CADJ STORE theta(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
CADJ & kind = isbyte
CADJ STORE salt(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey,
CADJ & kind = isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, k,
I theta(1-OLx,1-OLy,k,bi,bj),
I salt (1-OLx,1-OLy,k,bi,bj),
O rhoInSitu(1-OLx,1-OLy,k,bi,bj),
I k, bi, bj, myThid )
ELSE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
rhoInSitu(i,j,k,bi,bj) = 0.
ENDDO
ENDDO
ENDIF
IF ( useGMRedi .OR. (k.GT.1 .AND. ivdc_kappa.NE.0.)
& .OR. useSALT_PLUME .OR. doDiagsRho.GE.1 ) THEN
IF (k.GT.1) THEN
CADJ STORE theta(:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,
CADJ & kind = isbyte
CADJ STORE salt (:,:,k-1,bi,bj) = comlev1_bibj_k, key=kkey,
CADJ & kind = isbyte
CADJ STORE rhokm1 (bi,bj) = comlev1_bibj_k, key=kkey,
CADJ & kind = isbyte
CALL FIND_RHO_2D(
I iMin, iMax, jMin, jMax, k,
I theta(1-OLx,1-OLy,k-1,bi,bj),
I salt (1-OLx,1-OLy,k-1,bi,bj),
O rhoKm1,
I k-1, bi, bj, myThid )
ENDIF
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('GRAD_SIGMA',myThid)
DO j=jMin,jMax
DO i=iMin,iMax
rhoKp1(i,j) = rhoInSitu(i,j,k,bi,bj)
ENDDO
ENDDO
CALL GRAD_SIGMA(
I bi, bj, iMin, iMax, jMin, jMax, k,
I rhoInSitu(1-OLx,1-OLy,k,bi,bj), rhoKm1, rhoKp1,
O sigmaX, sigmaY, sigmaR,
I myThid )
ENDIF
IF (k.GT.1 .AND. ivdc_kappa.NE.0.) THEN
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('CALC_IVDC',myThid)
CALL CALC_IVDC(
I bi, bj, iMin, iMax, jMin, jMax, k,
I rhoKm1, rhoInSitu(1-OLx,1-OLy,k,bi,bj),
I myTime, myIter, myThid)
ENDIF
ENDDO
CADJ STORE IVDConvCount(:,:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
IF ( useGMRedi .OR. doDiagsRho.GE.4 ) THEN
CALL CALC_OCE_MXLAYER(
I rhoInSitu(1-OLx,1-OLy,1,bi,bj), sigmaR,
I bi, bj, myTime, myIter, myThid )
ENDIF
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('EXTERNAL_FORCING_SURF',myThid)
CADJ STORE EmPmR(:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CADJ STORE PmEpR(:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CALL EXTERNAL_FORCING_SURF(
I bi, bj, iMin, iMax, jMin, jMax,
I myTime, myIter, myThid )
CADJ STORE surfaceForcingU(:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CADJ STORE surfaceForcingV(:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CADJ STORE surfaceForcingS(:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CADJ STORE surfaceForcingT(:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
CADJ STORE surfaceForcingTice(:,:,bi,bj)
CADJ & = comlev1_bibj, key=itdkey,
CADJ & kind = isbyte
IF ( taveFreq.GT. 0.d0 ) THEN
CALL TIMEAVE_SURF_FLUX( bi, bj, myTime, myIter, myThid)
ENDIF
IF (taveFreq.GT.0. .AND. ivdc_kappa.NE.0.) THEN
CALL TIMEAVE_CUMULATE(ConvectCountTave, IVDConvCount,
I Nr, deltaTclock, bi, bj, myThid)
ENDIF
IF (useGMRedi) THEN
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('GMREDI_CALC_TENSOR',myThid)
CALL GMREDI_CALC_TENSOR(
I iMin, iMax, jMin, jMax,
I sigmaX, sigmaY, sigmaR,
I bi, bj, myTime, myIter, myThid )
ELSE
CALL GMREDI_CALC_TENSOR_DUMMY(
I iMin, iMax, jMin, jMax,
I sigmaX, sigmaY, sigmaR,
I bi, bj, myTime, myIter, myThid )
ENDIF
ENDDO
ENDDO
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE('DO_OCEANIC_PHYS',myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE DO_STAGGER_FIELDS_EXCHANGES(myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
IF ( staggerTimeStep .AND. useMultiDimAdvec) THEN
CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
IF ( .NOT.implicitIntGravWave )
& CALL EXCH_XYZ_RL ( wVel , myThid )
ENDIF
IF ( implicitIntGravWave ) THEN
CALL EXCH_XYZ_RL ( gT , myThid )
CALL EXCH_XYZ_RL ( gS , myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE DYNAMICS(myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 fVerU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 fVerV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 phiHydF (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 phiHydC (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 guDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 gvDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 KappaRU (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 KappaRV (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
INTEGER iMin, iMax
INTEGER jMin, jMax
INTEGER bi, bj
INTEGER i, j
INTEGER k, km1, kp1, kup, kDown
C
C
C
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_ENTER( 'DYNAMICS', myThid )
CHPF$ INDEPENDENT
DO bj=myByLo(myThid),myByHi(myThid)
CHPF$ INDEPENDENT, NEW (fVerU,fVerV
CHPF$& ,phiHydF
CHPF$& ,KappaRU,KappaRV
CHPF$& )
DO bi=myBxLo(myThid),myBxHi(myThid)
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
idynkey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
DO k=1,Nr
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
KappaRU(i,j,k) = 0.d0
KappaRV(i,j,k) = 0.d0
gU(i,j,k,bi,bj) = 0.d0
gV(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
fVerU (i,j,1) = 0.d0
fVerU (i,j,2) = 0.d0
fVerV (i,j,1) = 0.d0
fVerV (i,j,2) = 0.d0
phiHydF (i,j) = 0.d0
phiHydC (i,j) = 0.d0
phiSurfX(i,j) = 0.d0
phiSurfY(i,j) = 0.d0
guDissip(i,j) = 0.d0
gvDissip(i,j) = 0.d0
phiHydLow(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
iMin = 0
iMax = sNx+1
jMin = 0
jMax = sNy+1
CADJ STORE wvel (:,:,:,bi,bj) =
CADJ & comlev1_bibj, key=idynkey, byte=isbyte
IF (implicSurfPress.NE.1.) THEN
CALL CALC_GRAD_PHI_SURF(
I bi,bj,iMin,iMax,jMin,jMax,
I etaN,
O phiSurfX,phiSurfY,
I myThid )
ENDIF
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=idynkey, byte=isbyte
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=idynkey, byte=isbyte
CALL CALC_VISCOSITY(
I bi,bj, iMin,iMax,jMin,jMax,
O KappaRU, KappaRV,
I myThid )
CADJ STORE KappaRU(:,:,:)
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte
CADJ STORE KappaRV(:,:,:)
CADJ & = comlev1_bibj, key=idynkey, byte=isbyte
DO k=1,Nr
km1 = MAX(1,k-1)
kp1 = MIN(k+1,Nr)
kup = 1+MOD(k+1,2)
kDown= 1+MOD(k,2)
kkey = (idynkey-1)*Nr + k
c
CADJ STORE totphihyd (:,:,k,bi,bj)
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE phihydlow (:,:,bi,bj)
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE theta (:,:,k,bi,bj)
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE salt (:,:,k,bi,bj)
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE gt(:,:,k,bi,bj)
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE gs(:,:,k,bi,bj)
CADJ & = comlev1_bibj_k, key=kkey, byte=isbyte
IF ( implicitIntGravWave ) THEN
CALL CALC_PHI_HYD(
I bi,bj,iMin,iMax,jMin,jMax,k,
I gT, gS,
U phiHydF,
O phiHydC, dPhiHydX, dPhiHydY,
I myTime, myIter, myThid )
ELSE
CALL CALC_PHI_HYD(
I bi,bj,iMin,iMax,jMin,jMax,k,
I theta, salt,
U phiHydF,
O phiHydC, dPhiHydX, dPhiHydY,
I myTime, myIter, myThid )
ENDIF
IF ( momStepping ) THEN
IF (.NOT. vectorInvariantMomentum) THEN
C
CALL MOM_FLUXFORM(
I bi,bj,iMin,iMax,jMin,jMax,k,kup,kDown,
I KappaRU, KappaRV,
U fVerU, fVerV,
O guDissip, gvDissip,
I myTime, myIter, myThid)
ELSE
C
C
CALL MOM_VECINV(
I bi,bj,iMin,iMax,jMin,jMax,k,kup,kDown,
I KappaRU, KappaRV,
U fVerU, fVerV,
O guDissip, gvDissip,
I myTime, myIter, myThid)
ENDIF
C
CALL TIMESTEP(
I bi,bj,iMin,iMax,jMin,jMax,k,
I dPhiHydX,dPhiHydY, phiSurfX, phiSurfY,
I guDissip, gvDissip,
I myTime, myIter, myThid)
ENDIF
ENDDO
IF ( implicitViscosity ) THEN
CADJ STORE KappaRU(:,:,:) = comlev1_bibj , key=idynkey, byte=isbyte
CADJ STORE gU(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte
CALL IMPLDIFF(
I bi, bj, iMin, iMax, jMin, jMax,
I -1, KappaRU,recip_HFacW,
U gU,
I myThid )
CADJ STORE KappaRV(:,:,:) = comlev1_bibj , key=idynkey, byte=isbyte
CADJ STORE gV(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte
CALL IMPLDIFF(
I bi, bj, iMin, iMax, jMin, jMax,
I -2, KappaRV,recip_HFacS,
U gV,
I myThid )
ENDIF
IF (implicitViscosity.AND.useCDscheme) THEN
CADJ STORE vVelD(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte
CALL IMPLDIFF(
I bi, bj, iMin, iMax, jMin, jMax,
I 0, KappaRU,recip_HFacW,
U vVelD,
I myThid )
CADJ STORE uVelD(:,:,:,bi,bj) = comlev1_bibj , key=idynkey, byte=isbyte
CALL IMPLDIFF(
I bi, bj, iMin, iMax, jMin, jMax,
I 0, KappaRV,recip_HFacS,
U uVelD,
I myThid )
ENDIF
ENDDO
ENDDO
If ( debugLevel .GE. debLevB ) THEN
CALL DEBUG_STATS_RL(1,EtaN,'EtaN (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,uVel,'Uvel (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,vVel,'Vvel (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,wVel,'Wvel (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,theta,'Theta (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,salt,'Salt (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gU,'Gu (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gV,'Gv (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gT,'Gt (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gS,'Gs (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,guNm1,'GuNm1 (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gvNm1,'GvNm1 (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gtNm1,'GtNm1 (DYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gsNm1,'GsNm1 (DYNAMICS)',myThid)
ENDIF
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE( 'DYNAMICS', myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
Real*8 myTime
INTEGER myIter
INTEGER bi,bj,i,j,intime0,intime1
Real*8 aWght,bWght,rdt
Real*8 tmp1Wght, tmp2Wght
INTEGER nForcingPeriods,Imytm,Ifprd,Ifcyc,Iftm
IF ( periodicExternalForcing ) THEN
rdt = 1.d0 / deltaTclock
nForcingPeriods = NINT(externForcingCycle/externForcingPeriod)
Imytm = NINT(myTime*rdt)
Ifprd = NINT(externForcingPeriod*rdt)
Ifcyc = NINT(externForcingCycle*rdt)
Imytm = Imytm + Ifcyc*( 1 - NINT(myTime/externForcingCycle) )
Iftm = MOD( Imytm+Ifcyc-Ifprd/2, Ifcyc)
intime0 = 1 + INT(Iftm/Ifprd)
intime1 = 1 + MOD(intime0,nForcingPeriods)
tmp1Wght = FLOAT( Iftm-Ifprd*(intime0 - 1) )
tmp2Wght = FLOAT( Ifprd )
aWght = tmp1Wght / tmp2Wght
bWght = 1.d0 - aWght
IF (
& Iftm-Ifprd*(intime0-1) .EQ. 0
& .OR. myIter .EQ. nIter0
& ) THEN
IF ( myThid .EQ. 1 ) THEN
WRITE(standardMessageUnit,'(A,2I5,I10,1P1E20.12)')
& 'S/R EXTERNAL_FIELDS_LOAD: Reading new data:',
& intime0, intime1, myIter, myTime
ENDIF
IF ( zonalWindFile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( zonalWindFile, taux0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( zonalWindFile, taux1,
& intime1, myIter, myThid )
ENDIF
IF ( meridWindFile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( meridWindFile, tauy0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( meridWindFile, tauy1,
& intime1, myIter, myThid )
ENDIF
IF ( surfQFile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( surfQFile, Qnet0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( surfQFile, Qnet1,
& intime1, myIter, myThid )
ELSEIF ( surfQnetFile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( surfQnetFile, Qnet0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( surfQnetFile, Qnet1,
& intime1, myIter, myThid )
ENDIF
IF ( EmPmRfile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( EmPmRfile, EmPmR0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( EmPmRfile, EmPmR1,
& intime1, myIter, myThid )
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
EmPmR0(i,j,bi,bj) = EmPmR0(i,j,bi,bj)*rhoConstFresh
EmPmR1(i,j,bi,bj) = EmPmR1(i,j,bi,bj)*rhoConstFresh
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
IF ( saltFluxFile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( saltFluxFile, saltFlux0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( saltFluxFile, saltFlux1,
& intime1, myIter, myThid )
ENDIF
IF ( thetaClimFile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( thetaClimFile, SST0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( thetaClimFile, SST1,
& intime1, myIter, myThid )
ENDIF
IF ( saltClimFile .NE. ' ' ) THEN
CALL READ_REC_XY_RS( saltClimFile, SSS0,
& intime0, myIter, myThid )
CALL READ_REC_XY_RS( saltClimFile, SSS1,
& intime1, myIter, myThid )
ENDIF
CALL EXCH_XY_RS ( SST0 , myThid )
CALL EXCH_XY_RS ( SST1 , myThid )
CALL EXCH_XY_RS ( SSS0 , myThid )
CALL EXCH_XY_RS ( SSS1 , myThid )
CALL EXCH_UV_XY_RS(taux0,tauy0,.TRUE.,myThid)
CALL EXCH_UV_XY_RS(taux1,tauy1,.TRUE.,myThid)
CALL EXCH_XY_RS ( Qnet0, myThid )
CALL EXCH_XY_RS ( Qnet1, myThid )
CALL EXCH_XY_RS ( EmPmR0, myThid )
CALL EXCH_XY_RS ( EmPmR1, myThid )
CALL EXCH_XY_RS ( saltFlux0, myThid )
CALL EXCH_XY_RS ( saltFlux1, myThid )
ENDIF
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
IF ( thetaClimFile .NE. ' ' ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
SST(i,j,bi,bj) = bWght*SST0(i,j,bi,bj)
& + aWght*SST1(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( saltClimFile .NE. ' ' ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
SSS(i,j,bi,bj) = bWght*SSS0(i,j,bi,bj)
& + aWght*SSS1(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( zonalWindFile .NE. ' ' ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fu(i,j,bi,bj) = bWght*taux0(i,j,bi,bj)
& + aWght*taux1(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( meridWindFile .NE. ' ' ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fv(i,j,bi,bj) = bWght*tauy0(i,j,bi,bj)
& + aWght*tauy1(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( surfQnetFile .NE. ' '
& .OR. surfQFile .NE. ' ' ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
Qnet(i,j,bi,bj) = bWght*Qnet0(i,j,bi,bj)
& + aWght*Qnet1(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( EmPmRfile .NE. ' ' ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
EmPmR(i,j,bi,bj) = bWght*EmPmR0(i,j,bi,bj)
& + aWght*EmPmR1(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( saltFluxFile .NE. ' ' ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
saltFlux(i,j,bi,bj) = bWght*saltFlux0(i,j,bi,bj)
& + aWght*saltFlux1(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
IF ( debugLevel.GE.debLevA .AND. myTime.LT.62208000.) THEN
IF ( myThid .EQ. 1 ) THEN
WRITE(standardMessageUnit,'(a,1p7e12.4,2i6,2e12.4)')
& 'time,SST,SSS,fu,fv,Q,E-P,i0,i1,a,b = ',
& myTime,
& SST(1,sNy,1,1),SSS(1,sNy,1,1),
& fu(1,sNy,1,1),fv(1,sNy,1,1),
& Qnet(1,sNy,1,1),EmPmR(1,sNy,1,1),
& intime0,intime1,aWght,bWght
WRITE(standardMessageUnit,'(a,1p4e12.4,2E23.15)')
& 'time,fu0,fu1,fu = ',
& myTime,
& taux0(1,sNy,1,1),taux1(1,sNy,1,1),fu(1,sNy,1,1),
& aWght,bWght
ENDIF
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE EXTERNAL_FORCING_U(
I iMin,iMax, jMin,jMax, bi,bj, kLev,
I myTime, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
Real*8 myTime
INTEGER myThid
INTEGER i, j
INTEGER kSurface
IF ( fluidIsAir ) THEN
kSurface = 0
ELSEIF ( usingPCoords ) THEN
kSurface = Nr
ELSE
kSurface = 1
ENDIF
IF ( kLev .EQ. kSurface ) THEN
DO j=0,sNy+1
DO i=1,sNx+1
gU(i,j,kLev,bi,bj) = gU(i,j,kLev,bi,bj)
& +foFacMom*surfaceForcingU(i,j,bi,bj)
& *recip_drF(kLev)*recip_hFacW(i,j,kLev,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
SUBROUTINE EXTERNAL_FORCING_V(
I iMin,iMax, jMin,jMax, bi,bj, kLev,
I myTime, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
Real*8 myTime
INTEGER myThid
INTEGER i, j
INTEGER kSurface
IF ( fluidIsAir ) THEN
kSurface = 0
ELSEIF ( usingPCoords ) THEN
kSurface = Nr
ELSE
kSurface = 1
ENDIF
IF ( kLev .EQ. kSurface ) THEN
DO j=1,sNy+1
DO i=0,sNx+1
gV(i,j,kLev,bi,bj) = gV(i,j,kLev,bi,bj)
& +foFacMom*surfaceForcingV(i,j,bi,bj)
& *recip_drF(kLev)*recip_hFacS(i,j,kLev,bi,bj)
ENDDO
ENDDO
ENDIF
RETURN
END
SUBROUTINE EXTERNAL_FORCING_T(
I iMin,iMax, jMin,jMax, bi,bj, kLev,
I myTime, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
Real*8 myTime
INTEGER myThid
INTEGER i, j
INTEGER kSurface
IF ( fluidIsAir ) THEN
kSurface = 0
ELSEIF ( usingPCoords ) THEN
kSurface = Nr
ELSE
kSurface = 1
ENDIF
IF ( kLev .EQ. kSurface ) THEN
DO j=1,sNy
DO i=1,sNx
gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
& +surfaceForcingT(i,j,bi,bj)
& *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
ENDDO
ENDDO
ENDIF
IF (linFSConserveTr) THEN
DO j=1,sNy
DO i=1,sNx
IF (kLev .EQ. ksurfC(i,j,bi,bj)) THEN
gT(i,j,kLev,bi,bj)=gT(i,j,kLev,bi,bj)
& +TsurfCor*recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
ENDIF
ENDDO
ENDDO
ENDIF
RETURN
END
SUBROUTINE EXTERNAL_FORCING_S(
I iMin,iMax, jMin,jMax, bi,bj, kLev,
I myTime, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
Real*8 myTime
INTEGER myThid
INTEGER i, j
INTEGER kSurface
IF ( fluidIsAir ) THEN
kSurface = 0
ELSEIF ( usingPCoords ) THEN
kSurface = Nr
ELSE
kSurface = 1
ENDIF
IF ( kLev .EQ. kSurface ) THEN
DO j=1,sNy
DO i=1,sNx
gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
& +surfaceForcingS(i,j,bi,bj)
& *recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
ENDDO
ENDDO
ENDIF
IF (linFSConserveTr) THEN
DO j=1,sNy
DO i=1,sNx
IF (kLev .EQ. ksurfC(i,j,bi,bj)) THEN
gS(i,j,kLev,bi,bj)=gS(i,j,kLev,bi,bj)
& +SsurfCor*recip_drF(kLev)*recip_hFacC(i,j,kLev,bi,bj)
ENDIF
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE EXTERNAL_FORCING_SURF(
I bi, bj, iMin, iMax, jMin, jMax,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj
INTEGER iMin, iMax
INTEGER jMin, jMax
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER i,j
INTEGER ks
IF ( usingPCoords ) THEN
ks = Nr
ELSE
ks = 1
ENDIF
IF ( doThetaClimRelax .OR. doSaltClimRelax ) THEN
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingT(i,j,bi,bj) =
& -lambdaThetaClimRelax(i,j,bi,bj)
& *(theta(i,j,ks,bi,bj)-SST(i,j,bi,bj))
& *drF(ks)*hFacC(i,j,ks,bi,bj)
surfaceForcingS(i,j,bi,bj) =
& -lambdaSaltClimRelax(i,j,bi,bj)
& *(salt(i,j,ks,bi,bj)-SSS(i,j,bi,bj))
& *drF(ks)*hFacC(i,j,ks,bi,bj)
ENDDO
ENDDO
ELSE
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingT(i,j,bi,bj) = 0.d0
surfaceForcingS(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
ENDIF
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingU(i,j,bi,bj) =
& fu(i,j,bi,bj)*mass2rUnit
surfaceForcingV(i,j,bi,bj) =
& fv(i,j,bi,bj)*mass2rUnit
surfaceForcingT(i,j,bi,bj) = surfaceForcingT(i,j,bi,bj)
& - ( Qnet(i,j,bi,bj)
& +Qnetm(i,j,bi,bj)
& ) *recip_Cp*mass2rUnit
surfaceForcingS(i,j,bi,bj) = surfaceForcingS(i,j,bi,bj)
& -saltFlux(i,j,bi,bj)*mass2rUnit
ENDDO
ENDDO
IF ( useRealFreshWaterFlux ) THEN
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)*maskInC(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( staggerTimeStep ) THEN
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( (nonlinFreeSurf.GT.0 .OR. usingPCoords)
& .AND. useRealFreshWaterFlux ) THEN
IF (temp_EvPrRn.NE.UNSET_RL) THEN
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingT(i,j,bi,bj) = surfaceForcingT(i,j,bi,bj)
& + PmEpR(i,j,bi,bj)
& *( temp_EvPrRn - theta(i,j,ks,bi,bj) )
& *mass2rUnit
ENDDO
ENDDO
ENDIF
IF (salt_EvPrRn.NE.UNSET_RL) THEN
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingS(i,j,bi,bj) = surfaceForcingS(i,j,bi,bj)
& + PmEpR(i,j,bi,bj)
& *( salt_EvPrRn - salt(i,j,ks,bi,bj) )
& *mass2rUnit
ENDDO
ENDDO
ENDIF
ELSE
IF (convertFW2Salt .EQ. -1.) THEN
IF (temp_EvPrRn.NE.UNSET_RL) THEN
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingT(i,j,bi,bj) = surfaceForcingT(i,j,bi,bj)
& + EmPmR(i,j,bi,bj)
& *( theta(i,j,ks,bi,bj) - temp_EvPrRn )
& *mass2rUnit
ENDDO
ENDDO
ENDIF
IF (salt_EvPrRn.NE.UNSET_RL) THEN
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingS(i,j,bi,bj) = surfaceForcingS(i,j,bi,bj)
& + EmPmR(i,j,bi,bj)
& *( salt(i,j,ks,bi,bj) - salt_EvPrRn )
& *mass2rUnit
ENDDO
ENDDO
ENDIF
ELSE
IF (temp_EvPrRn.NE.UNSET_RL) THEN
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingT(i,j,bi,bj) = surfaceForcingT(i,j,bi,bj)
& + EmPmR(i,j,bi,bj)
& *( tRef(ks) - temp_EvPrRn )
& *mass2rUnit
ENDDO
ENDDO
ENDIF
IF (salt_EvPrRn.NE.UNSET_RL) THEN
DO j = jMin, jMax
DO i = iMin, iMax
surfaceForcingS(i,j,bi,bj) = surfaceForcingS(i,j,bi,bj)
& + EmPmR(i,j,bi,bj)
& *( convertFW2Salt - salt_EvPrRn )
& *mass2rUnit
ENDDO
ENDDO
ENDIF
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE FIND_ALPHA (
I bi, bj, iMin, iMax, jMin, jMax, k, kRef,
O alphaLoc,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k
INTEGER kRef
Real*8 alphaLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER i,j
Real*8 refTemp,refSalt,tP,sP
Real*8 t1, t2, t3, s1, s3o2, p1, p2, sp5, p1t1
Real*8 drhoP0dtheta, drhoP0dthetaFresh, drhoP0dthetaSalt
Real*8 dKdtheta, dKdthetaFresh, dKdthetaSalt, dKdthetaPres
Real*8 locPres(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rhoP0 (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 bulkMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dnum_dtheta, dden_dtheta
Real*8 rhoDen (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rhoLoc (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
IF (equationOfState.EQ.'LINEAR') THEN
DO j=jMin,jMax
DO i=iMin,iMax
alphaLoc(i,j) = -rhonil * tAlpha
ENDDO
ENDDO
ELSEIF (equationOfState.EQ.'POLY3') THEN
refTemp=eosRefT(kRef)
refSalt=eosRefS(kRef)
DO j=jMin,jMax
DO i=iMin,iMax
tP=theta(i,j,k,bi,bj)-refTemp
sP=salt(i,j,k,bi,bj)-refSalt
alphaLoc(i,j) =
& ( eosC(6,kRef)
& *tP*3.
& +(eosC(7,kRef)*sP + eosC(3,kRef))*2.
& )*tP
& +(eosC(8,kRef)*sP + eosC(4,kRef) )*sP + eosC(1,kRef)
&
ENDDO
ENDDO
ELSEIF ( equationOfState(1:5).EQ.'JMD95'
& .OR. equationOfState.EQ.'UNESCO' ) THEN
CALL PRESSURE_FOR_EOS(
I bi, bj, iMin, iMax, jMin, jMax, kRef,
O locPres,
I myThid )
CALL FIND_RHOP0(
I iMin, iMax, jMin, jMax,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O rhoP0,
I myThid )
CALL FIND_BULKMOD(
I iMin, iMax, jMin, jMax, locPres,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O bulkMod,
I myThid )
DO j=jMin,jMax
DO i=iMin,iMax
t1 = theta(i,j,k,bi,bj)
t2 = t1*t1
t3 = t2*t1
s1 = salt(i,j,k,bi,bj)
IF ( s1 .GT. 0.d0 ) THEN
s3o2 = SQRT(s1*s1*s1)
ELSE
s1 = 0.d0
s3o2 = 0.d0
ENDIF
p1 = locPres(i,j)*SItoBar
p2 = p1*p1
drhoP0dthetaFresh =
& eosJMDCFw(2)
& + 2.*eosJMDCFw(3)*t1
& + 3.*eosJMDCFw(4)*t2
& + 4.*eosJMDCFw(5)*t3
& + 5.*eosJMDCFw(6)*t3*t1
drhoP0dthetaSalt =
& s1*(
& eosJMDCSw(2)
& + 2.*eosJMDCSw(3)*t1
& + 3.*eosJMDCSw(4)*t2
& + 4.*eosJMDCSw(5)*t3
& )
& + s3o2*(
& + eosJMDCSw(7)
& + 2.*eosJMDCSw(8)*t1
& )
dKdthetaFresh =
& eosJMDCKFw(2)
& + 2.*eosJMDCKFw(3)*t1
& + 3.*eosJMDCKFw(4)*t2
& + 4.*eosJMDCKFw(5)*t3
dKdthetaSalt =
& s1*( eosJMDCKSw(2)
& + 2.*eosJMDCKSw(3)*t1
& + 3.*eosJMDCKSw(4)*t2
& )
& + s3o2*( eosJMDCKSw(6)
& + 2.*eosJMDCKSw(7)*t1
& )
dKdthetaPres =
& p1*( eosJMDCKP(2)
& + 2.*eosJMDCKP(3)*t1
& + 3.*eosJMDCKP(4)*t2
& )
& + p1*s1*( eosJMDCKP(6)
& + 2.*eosJMDCKP(7)*t1
& )
& + p2*( eosJMDCKP(10)
& + 2.*eosJMDCKP(11)*t1
& )
& + p2*s1*( eosJMDCKP(13)
& + 2.*eosJMDCKP(14)*t1
& )
drhoP0dtheta = drhoP0dthetaFresh
& + drhoP0dthetaSalt
dKdtheta = dKdthetaFresh
& + dKdthetaSalt
& + dKdthetaPres
alphaLoc(i,j) =
& ( bulkmod(i,j)**2*drhoP0dtheta
& - bulkmod(i,j)*p1*drhoP0dtheta
& - rhoP0(i,j)*p1*dKdtheta )
& /( bulkmod(i,j) - p1 )**2
ENDDO
ENDDO
ELSEIF ( equationOfState.EQ.'MDJWF' ) THEN
CALL PRESSURE_FOR_EOS(
I bi, bj, iMin, iMax, jMin, jMax, kRef,
O locPres,
I myThid )
CALL FIND_RHONUM(
I iMin, iMax, jMin, jMax, locPres,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O rhoLoc,
I myThid )
CALL FIND_RHODEN(
I iMin, iMax, jMin, jMax, locPres,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O rhoDen,
I myThid )
DO j=jMin,jMax
DO i=iMin,iMax
t1 = theta(i,j,k,bi,bj)
t2 = t1*t1
s1 = salt(i,j,k,bi,bj)
IF ( s1 .GT. 0.d0 ) THEN
sp5 = SQRT(s1)
ELSE
s1 = 0.d0
sp5 = 0.d0
ENDIF
p1 = locPres(i,j)*SItodBar
p1t1 = p1*t1
dnum_dtheta = eosMDJWFnum(1)
& + t1*(2.*eosMDJWFnum(2) + 3.*eosMDJWFnum(3)*t1)
& + eosMDJWFnum(5)*s1
& + p1t1*(2.*eosMDJWFnum(8) + 2.*eosMDJWFnum(11)*p1)
dden_dtheta = eosMDJWFden(1)
& + t1*(2.*eosMDJWFden(2)
& + t1*(3.*eosMDJWFden(3)
& + 4.*eosMDJWFden(4)*t1 ) )
& + s1*(eosMDJWFden(6)
& + t1*(3.*eosMDJWFden(7)*t1
& + 2.*eosMDJWFden(9)*sp5 ) )
& + p1*p1*(3.*eosMDJWFden(11)*t2 + eosMDJWFden(12)*p1)
alphaLoc(i,j) = rhoDen(i,j)*(dnum_dtheta
& - (rhoLoc(i,j)*rhoDen(i,j))*dden_dtheta)
ENDDO
ENDDO
ELSE
WRITE(*,*) 'FIND_ALPHA: equationOfState = ',equationOfState
STOP 'FIND_ALPHA: "equationOfState" has illegal value'
ENDIF
RETURN
END
SUBROUTINE FIND_BETA (
I bi, bj, iMin, iMax, jMin, jMax, k, kRef,
O betaLoc,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k
INTEGER kRef
Real*8 betaLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER i,j
Real*8 refTemp,refSalt,tP,sP
Real*8 t1, t2, t3, s1, s3o2, p1, sp5, p1t1
Real*8 drhoP0dS
Real*8 dKdS, dKdSSalt, dKdSPres
Real*8 locPres(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rhoP0 (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 bulkMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dnum_dsalt, dden_dsalt
Real*8 rhoDen (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rhoLoc (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
IF (equationOfState.EQ.'LINEAR') THEN
DO j=jMin,jMax
DO i=iMin,iMax
betaLoc(i,j) = rhonil * sBeta
ENDDO
ENDDO
ELSEIF (equationOfState.EQ.'POLY3') THEN
refTemp=eosRefT(kRef)
refSalt=eosRefS(kRef)
DO j=jMin,jMax
DO i=iMin,iMax
tP=theta(i,j,k,bi,bj)-refTemp
sP=salt(i,j,k,bi,bj)-refSalt
betaLoc(i,j) =
& ( eosC(9,kRef)*sP*3. + eosC(5,kRef)*2. )*sP + eosC(2,kRef)
& + ( eosC(7,kRef)*tP
& +eosC(8,kRef)*sP*2. + eosC(4,kRef)
& )*tP
ENDDO
ENDDO
ELSEIF ( equationOfState(1:5).EQ.'JMD95'
& .OR. equationOfState.EQ.'UNESCO' ) THEN
CALL PRESSURE_FOR_EOS(
I bi, bj, iMin, iMax, jMin, jMax, kRef,
O locPres,
I myThid )
CALL FIND_RHOP0(
I iMin, iMax, jMin, jMax,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O rhoP0,
I myThid )
CALL FIND_BULKMOD(
I iMin, iMax, jMin, jMax, locPres,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O bulkMod,
I myThid )
DO j=jMin,jMax
DO i=iMin,iMax
t1 = theta(i,j,k,bi,bj)
t2 = t1*t1
t3 = t2*t1
s1 = salt(i,j,k,bi,bj)
IF ( s1 .GT. 0.d0 ) THEN
s3o2 = 1.5*SQRT(s1)
ELSE
s1 = 0.d0
s3o2 = 0.d0
ENDIF
p1 = locPres(i,j)*SItoBar
drhoP0dS = 0.d0
drhoP0dS = drhoP0dS
& + eosJMDCSw(1)
& + eosJMDCSw(2)*t1
& + eosJMDCSw(3)*t2
& + eosJMDCSw(4)*t3
& + eosJMDCSw(5)*t3*t1
& + s3o2*(
& eosJMDCSw(6)
& + eosJMDCSw(7)*t1
& + eosJMDCSw(8)*t2
& )
& + 2*eosJMDCSw(9)*s1
dKdS = 0.d0
dKdSSalt =
& eosJMDCKSw(1)
& + eosJMDCKSw(2)*t1
& + eosJMDCKSw(3)*t2
& + eosJMDCKSw(4)*t3
& + s3o2*( eosJMDCKSw(5)
& + eosJMDCKSw(6)*t1
& + eosJMDCKSw(7)*t2
& )
dKdSPres =
& p1*( eosJMDCKP(5)
& + eosJMDCKP(6)*t1
& + eosJMDCKP(7)*t2
& )
& + s3o2*p1*eosJMDCKP(8)
& + p1*p1*( eosJMDCKP(12)
& + eosJMDCKP(13)*t1
& + eosJMDCKP(14)*t2
& )
dKdS = dKdSSalt + dKdSPres
betaLoc(i,j) =
& ( bulkmod(i,j)**2*drhoP0dS
& - bulkmod(i,j)*p1*drhoP0dS
& - rhoP0(i,j)*p1*dKdS )
& /( bulkmod(i,j) - p1 )**2
ENDDO
ENDDO
ELSEIF ( equationOfState.EQ.'MDJWF' ) THEN
CALL PRESSURE_FOR_EOS(
I bi, bj, iMin, iMax, jMin, jMax, kRef,
O locPres,
I myThid )
CALL FIND_RHONUM(
I iMin, iMax, jMin, jMax, locPres,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O rhoLoc,
I myThid )
CALL FIND_RHODEN(
I iMin, iMax, jMin, jMax, locPres,
I theta(1-OLx,1-OLy,k,bi,bj), salt(1-OLx,1-OLy,k,bi,bj),
O rhoDen,
I myThid )
DO j=jMin,jMax
DO i=iMin,iMax
t1 = theta(i,j,k,bi,bj)
t2 = t1*t1
s1 = salt(i,j,k,bi,bj)
IF ( s1 .GT. 0.d0 ) THEN
sp5 = SQRT(s1)
ELSE
s1 = 0.d0
sp5 = 0.d0
ENDIF
p1 = locPres(i,j)*SItodBar
p1t1 = p1*t1
dnum_dsalt = eosMDJWFnum(4)
& + eosMDJWFnum(5)*t1
& + 2.*eosMDJWFnum(6)*s1 + eosMDJWFnum(9)*p1
dden_dsalt = eosMDJWFden(5)
& + t1*( eosMDJWFden(6) + eosMDJWFden(7)*t2 )
& + 1.5*sp5*(eosMDJWFden(8) + eosMDJWFden(9)*t2)
betaLoc(i,j) = rhoDen(i,j)*( dnum_dsalt
& - (rhoLoc(i,j)*rhoDen(i,j))*dden_dsalt )
ENDDO
ENDDO
ELSE
WRITE(*,*) 'FIND_BETA: equationOfState = ',equationOfState
STOP 'FIND_BETA: "equationOfState" has illegal value'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE FIND_RHO_2D(
I iMin, iMax, jMin, jMax, kRef,
I tFld, sFld,
O rhoLoc,
I k, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
INTEGER iMin,iMax,jMin,jMax
INTEGER kRef
Real*8 tFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 sFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER k, bi, bj
INTEGER myThid
INTEGER i,j
Real*8 refTemp,refSalt,sigRef,tP,sP,deltaSig,dRho
Real*8 locPres(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rhoP0 (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 bulkMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rhoNum (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 rhoDen (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
CHARACTER*(MAX_LEN_MBUF) msgBuf
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
rhoLoc(i,j) = 0.d0
rhoP0(i,j) = 0.d0
bulkMod(i,j) = 0.d0
ENDDO
ENDDO
IF (equationOfState.EQ.'LINEAR') THEN
refTemp=tRef(kRef)
refSalt=sRef(kRef)
dRho = rhoNil-rhoConst
DO j=jMin,jMax
DO i=iMin,iMax
rhoLoc(i,j)=rhoNil*(
& sBeta*(sFld(i,j)-refSalt)
& -tAlpha*(tFld(i,j)-refTemp) )
& + dRho
ENDDO
ENDDO
ELSEIF (equationOfState.EQ.'POLY3') THEN
refTemp=eosRefT(kRef)
refSalt=eosRefS(kRef)
sigRef=eosSig0(kRef) + (1000.-rhoConst)
DO j=jMin,jMax
DO i=iMin,iMax
tP=tFld(i,j)-refTemp
sP=sFld(i,j)-refSalt
deltaSig=
& (( eosC(9,kRef)*sP + eosC(5,kRef) )*sP + eosC(2,kRef) )*sP
& + ( ( eosC(6,kRef)
& *tP
& +eosC(7,kRef)*sP + eosC(3,kRef)
& )*tP
& +(eosC(8,kRef)*sP + eosC(4,kRef) )*sP + eosC(1,kRef)
& )*tP
rhoLoc(i,j)=sigRef+deltaSig
ENDDO
ENDDO
ELSEIF ( equationOfState(1:5).EQ.'JMD95'
& .OR. equationOfState.EQ.'UNESCO' ) THEN
CALL PRESSURE_FOR_EOS(
I bi, bj, iMin, iMax, jMin, jMax, kRef,
O locPres,
I myThid )
CALL FIND_RHOP0(
I iMin, iMax, jMin, jMax,
I tFld, sFld,
O rhoP0,
I myThid )
CALL FIND_BULKMOD(
I iMin, iMax, jMin, jMax,
I locPres, tFld, sFld,
O bulkMod,
I myThid )
DO j=jMin,jMax
DO i=iMin,iMax
rhoLoc(i,j) = rhoP0(i,j)
& /(1.d0 -
& locPres(i,j)*SItoBar/bulkMod(i,j) )
& - rhoConst
ENDDO
ENDDO
ELSEIF ( equationOfState.EQ.'MDJWF' ) THEN
CALL PRESSURE_FOR_EOS(
I bi, bj, iMin, iMax, jMin, jMax, kRef,
O locPres,
I myThid )
CALL FIND_RHONUM(
I iMin, iMax, jMin, jMax,
I locPres, tFld, sFld,
O rhoNum,
I myThid )
CALL FIND_RHODEN(
I iMin, iMax, jMin, jMax,
I locPres, tFld, sFld,
O rhoDen,
I myThid )
DO j=jMin,jMax
DO i=iMin,iMax
rhoLoc(i,j) = rhoNum(i,j)*rhoDen(i,j) - rhoConst
ENDDO
ENDDO
ELSEIF( equationOfState .EQ. 'IDEALG' ) THEN
C
ELSE
WRITE(msgBuf,'(3a)')
& ' FIND_RHO_2D: equationOfState = "',equationOfState,'"'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R FIND_RHO_2D'
ENDIF
RETURN
END
SUBROUTINE FIND_RHOP0(
I iMin, iMax, jMin, jMax,
I tFld, sFld,
O rhoP0,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
INTEGER iMin,iMax,jMin,jMax
Real*8 tFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 sFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoP0(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
INTEGER i,j
Real*8 rfresh, rsalt
Real*8 t, t2, t3, t4, s, s3o2
DO j=jMin,jMax
DO i=iMin,iMax
t = tFld(i,j)
t2 = t*t
t3 = t2*t
t4 = t3*t
s = sFld(i,j)
IF ( s .GT. 0.d0 ) THEN
s3o2 = s*SQRT(s)
ELSE
s = 0.d0
s3o2 = 0.d0
ENDIF
rfresh =
& eosJMDCFw(1)
& + eosJMDCFw(2)*t
& + eosJMDCFw(3)*t2
& + eosJMDCFw(4)*t3
& + eosJMDCFw(5)*t4
& + eosJMDCFw(6)*t4*t
rsalt =
& s*(
& eosJMDCSw(1)
& + eosJMDCSw(2)*t
& + eosJMDCSw(3)*t2
& + eosJMDCSw(4)*t3
& + eosJMDCSw(5)*t4
& )
& + s3o2*(
& eosJMDCSw(6)
& + eosJMDCSw(7)*t
& + eosJMDCSw(8)*t2
& )
& + eosJMDCSw(9)*s*s
rhoP0(i,j) = rfresh + rsalt
ENDDO
ENDDO
RETURN
END
SUBROUTINE FIND_BULKMOD(
I iMin, iMax, jMin, jMax,
I locPres, tFld, sFld,
O bulkMod,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
INTEGER iMin,iMax,jMin,jMax
Real*8 locPres(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 tFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 sFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 bulkMod(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
INTEGER i,j
Real*8 bMfresh, bMsalt, bMpres
Real*8 t, t2, t3, t4, s, s3o2, p, p2
DO j=jMin,jMax
DO i=iMin,iMax
t = tFld(i,j)
t2 = t*t
t3 = t2*t
t4 = t3*t
s = sFld(i,j)
IF ( s .GT. 0.d0 ) THEN
s3o2 = s*SQRT(s)
ELSE
s = 0.d0
s3o2 = 0.d0
ENDIF
C
p = locPres(i,j)*SItoBar
p2 = p*p
bMfresh =
& eosJMDCKFw(1)
& + eosJMDCKFw(2)*t
& + eosJMDCKFw(3)*t2
& + eosJMDCKFw(4)*t3
& + eosJMDCKFw(5)*t4
bMsalt =
& s*( eosJMDCKSw(1)
& + eosJMDCKSw(2)*t
& + eosJMDCKSw(3)*t2
& + eosJMDCKSw(4)*t3
& )
& + s3o2*( eosJMDCKSw(5)
& + eosJMDCKSw(6)*t
& + eosJMDCKSw(7)*t2
& )
bMpres =
& p*( eosJMDCKP(1)
& + eosJMDCKP(2)*t
& + eosJMDCKP(3)*t2
& + eosJMDCKP(4)*t3
& )
& + p*s*( eosJMDCKP(5)
& + eosJMDCKP(6)*t
& + eosJMDCKP(7)*t2
& )
& + p*s3o2*eosJMDCKP(8)
& + p2*( eosJMDCKP(9)
& + eosJMDCKP(10)*t
& + eosJMDCKP(11)*t2
& )
& + p2*s*( eosJMDCKP(12)
& + eosJMDCKP(13)*t
& + eosJMDCKP(14)*t2
& )
bulkMod(i,j) = bMfresh + bMsalt + bMpres
ENDDO
ENDDO
RETURN
END
SUBROUTINE FIND_RHONUM(
I iMin, iMax, jMin, jMax,
I locPres, tFld, sFld,
O rhoNum,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
INTEGER iMin,iMax,jMin,jMax
Real*8 locPres(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 tFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 sFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoNum (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
INTEGER i,j
Real*8 t1, t2, s1, p1
DO j=jMin,jMax
DO i=iMin,iMax
t1 = tFld(i,j)
t2 = t1*t1
s1 = sFld(i,j)
p1 = locPres(i,j)*SItodBar
rhoNum(i,j) = eosMDJWFnum(0)
& + t1*(eosMDJWFnum(1)
& + t1*(eosMDJWFnum(2) + eosMDJWFnum(3)*t1) )
& + s1*(eosMDJWFnum(4)
& + eosMDJWFnum(5)*t1 + eosMDJWFnum(6)*s1)
& + p1*(eosMDJWFnum(7) + eosMDJWFnum(8)*t2
& + eosMDJWFnum(9)*s1
& + p1*(eosMDJWFnum(10) + eosMDJWFnum(11)*t2) )
ENDDO
ENDDO
RETURN
END
SUBROUTINE FIND_RHODEN(
I iMin, iMax, jMin, jMax,
I locPres, tFld, sFld,
O rhoDen,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
INTEGER iMin,iMax,jMin,jMax
Real*8 locPres(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 tFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 sFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rhoDen (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
INTEGER myThid
INTEGER i,j
Real*8 t1, t2, s1, sp5, p1, p1t1
Real*8 den, epsln
parameter ( epsln = 0.d0 )
DO j=jMin,jMax
DO i=iMin,iMax
t1 = tFld(i,j)
t2 = t1*t1
s1 = sFld(i,j)
IF ( s1 .GT. 0.d0 ) THEN
sp5 = SQRT(s1)
ELSE
s1 = 0.d0
sp5 = 0.d0
ENDIF
p1 = locPres(i,j)*SItodBar
p1t1 = p1*t1
den = eosMDJWFden(0)
& + t1*(eosMDJWFden(1)
& + t1*(eosMDJWFden(2)
& + t1*(eosMDJWFden(3) + t1*eosMDJWFden(4) ) ) )
& + s1*(eosMDJWFden(5)
& + t1*(eosMDJWFden(6)
& + eosMDJWFden(7)*t2)
& + sp5*(eosMDJWFden(8) + eosMDJWFden(9)*t2) )
& + p1*(eosMDJWFden(10)
& + p1t1*(eosMDJWFden(11)*t2 + eosMDJWFden(12)*p1) )
rhoDen(i,j) = 1.0/(epsln+den)
ENDDO
ENDDO
RETURN
END
SUBROUTINE FIND_RHO_SCALAR(
I tLoc, sLoc, pLoc,
O rhoLoc,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
Real*8 tLoc, sLoc, pLoc
Real*8 rhoLoc
INTEGER myThid
Real*8 t1, t2, t3, t4, s1, s3o2, p1, p2, sp5, p1t1
Real*8 rfresh, rsalt, rhoP0
Real*8 bMfresh, bMsalt, bMpres, BulkMod
Real*8 rhoNum, rhoDen, den, epsln
PARAMETER ( epsln = 0.d0 )
CHARACTER*(MAX_LEN_MBUF) msgBuf
rhoLoc = 0.d0
rhoP0 = 0.d0
bulkMod = 0.d0
rfresh = 0.d0
rsalt = 0.d0
bMfresh = 0.d0
bMsalt = 0.d0
bMpres = 0.d0
rhoNum = 0.d0
rhoDen = 0.d0
den = 0.d0
t1 = tLoc
t2 = t1*t1
t3 = t2*t1
t4 = t3*t1
s1 = sLoc
IF ( s1 .LT. 0.d0 ) THEN
WRITE(msgBuf,'(A,E13.5)')
& ' FIND_RHO_SCALAR: WARNING, salinity = ', s1
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT , myThid )
s1 = 0.d0
ENDIF
IF (equationOfState.EQ.'LINEAR') THEN
rholoc = rhoNil*(
& sBeta *(sLoc-sRef(1))
& -tAlpha*(tLoc-tRef(1))
& ) + rhoNil
ELSEIF (equationOfState.EQ.'POLY3') THEN
WRITE(msgBuf,'(A)')
& ' FIND_RHO_SCALAR: for POLY3, the density is not'
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT , myThid )
WRITE(msgBuf,'(A)')
& ' computed correctly in this routine'
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT , myThid )
rhoLoc = 0.d0
ELSEIF ( equationOfState(1:5).EQ.'JMD95'
& .OR. equationOfState.EQ.'UNESCO' ) THEN
s3o2 = s1*SQRT(s1)
p1 = pLoc*SItoBar
p2 = p1*p1
rfresh =
& eosJMDCFw(1)
& + eosJMDCFw(2)*t1
& + eosJMDCFw(3)*t2
& + eosJMDCFw(4)*t3
& + eosJMDCFw(5)*t4
& + eosJMDCFw(6)*t4*t1
rsalt =
& s1*(
& eosJMDCSw(1)
& + eosJMDCSw(2)*t1
& + eosJMDCSw(3)*t2
& + eosJMDCSw(4)*t3
& + eosJMDCSw(5)*t4
& )
& + s3o2*(
& eosJMDCSw(6)
& + eosJMDCSw(7)*t1
& + eosJMDCSw(8)*t2
& )
& + eosJMDCSw(9)*s1*s1
rhoP0 = rfresh + rsalt
bMfresh =
& eosJMDCKFw(1)
& + eosJMDCKFw(2)*t1
& + eosJMDCKFw(3)*t2
& + eosJMDCKFw(4)*t3
& + eosJMDCKFw(5)*t4
bMsalt =
& s1*( eosJMDCKSw(1)
& + eosJMDCKSw(2)*t1
& + eosJMDCKSw(3)*t2
& + eosJMDCKSw(4)*t3
& )
& + s3o2*( eosJMDCKSw(5)
& + eosJMDCKSw(6)*t1
& + eosJMDCKSw(7)*t2
& )
bMpres =
& p1*( eosJMDCKP(1)
& + eosJMDCKP(2)*t1
& + eosJMDCKP(3)*t2
& + eosJMDCKP(4)*t3
& )
& + p1*s1*( eosJMDCKP(5)
& + eosJMDCKP(6)*t1
& + eosJMDCKP(7)*t2
& )
& + p1*s3o2*eosJMDCKP(8)
& + p2*( eosJMDCKP(9)
& + eosJMDCKP(10)*t1
& + eosJMDCKP(11)*t2
& )
& + p2*s1*( eosJMDCKP(12)
& + eosJMDCKP(13)*t1
& + eosJMDCKP(14)*t2
& )
bulkMod = bMfresh + bMsalt + bMpres
rhoLoc = rhoP0/(1.d0 - p1/bulkMod)
ELSEIF ( equationOfState.EQ.'MDJWF' ) THEN
sp5 = SQRT(s1)
p1 = pLoc*SItodBar
p1t1 = p1*t1
rhoNum = eosMDJWFnum(0)
& + t1*(eosMDJWFnum(1)
& + t1*(eosMDJWFnum(2) + eosMDJWFnum(3)*t1) )
& + s1*(eosMDJWFnum(4)
& + eosMDJWFnum(5)*t1 + eosMDJWFnum(6)*s1)
& + p1*(eosMDJWFnum(7) + eosMDJWFnum(8)*t2
& + eosMDJWFnum(9)*s1
& + p1*(eosMDJWFnum(10) + eosMDJWFnum(11)*t2) )
den = eosMDJWFden(0)
& + t1*(eosMDJWFden(1)
& + t1*(eosMDJWFden(2)
& + t1*(eosMDJWFden(3) + t1*eosMDJWFden(4) ) ) )
& + s1*(eosMDJWFden(5)
& + t1*(eosMDJWFden(6)
& + eosMDJWFden(7)*t2)
& + sp5*(eosMDJWFden(8) + eosMDJWFden(9)*t2) )
& + p1*(eosMDJWFden(10)
& + p1t1*(eosMDJWFden(11)*t2 + eosMDJWFden(12)*p1) )
rhoDen = 1.0/(epsln+den)
rhoLoc = rhoNum*rhoDen
ELSEIF( equationOfState .EQ. 'IDEALG' ) THEN
C
ELSE
WRITE(msgBuf,'(3A)')
& ' FIND_RHO_SCALAR : equationOfState = "',
& equationOfState,'"'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R FIND_RHO_SCALAR'
ENDIF
RETURN
END
SUBROUTINE LOOK_FOR_NEG_SALINITY(
I iMin, iMax, jMin, jMax,
U sFld,
I k, bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER iMin,iMax,jMin,jMax
Real*8 sFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER k, bi, bj
INTEGER myThid
INTEGER i,j, localWarning
CHARACTER*(MAX_LEN_MBUF) msgBuf
localWarning = 0
DO j=jMin,jMax
DO i=iMin,iMax
IF ( sFld(i,j) .LT. 0.d0 ) THEN
localWarning = localWarning + 1
sFld(i,j) = 0.d0
ENDIF
ENDDO
ENDDO
IF ( localWarning .GT. 0 ) THEN
WRITE(msgBuf,'(2A,I5,A,2I4)') 'S/R LOOK_FOR_NEG_SALINITY:',
& ' from level k =', k, ' ; bi,bj =', bi, bj
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
WRITE(msgBuf,'(2A,I6,A)') 'S/R LOOK_FOR_NEG_SALINITY:',
& ' reset to zero', localWarning, ' negative salinity.'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE FORWARD_STEP( iloop, myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
integer i_got_signal
common / sig_i / i_got_signal
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
INTEGER iloop
Real*8 myTime
INTEGER myIter
INTEGER myThid
LOGICAL modelEnd
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_ENTER('FORWARD_STEP',myThid)
CALL AUTODIFF_INADMODE_UNSET( myThid )
myIter = nIter0 + (iloop-1)
myTime = startTime + float(iloop-1)*deltaTclock
c
c
c
CADJ STORE totphihyd = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE pmepr = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE uveld = comlev1, key = ikey_dynamics, kind = isbyte
CADJ STORE vveld = comlev1, key = ikey_dynamics, kind = isbyte
CADJ STORE unm1 = comlev1, key = ikey_dynamics, kind = isbyte
CADJ STORE vnm1 = comlev1, key = ikey_dynamics, kind = isbyte
CADJ STORE taux0 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE taux1 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE tauy0 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE tauy1 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE Qnet0 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE Qnet1 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE EmPmR0 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE EmPmR1 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE SST0 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE SST1 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE SSS0 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE SSS1 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE saltFlux0 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE saltFlux1 = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE cMeanThetaUVel = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE cMeanThetaVVel = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
c
c
c
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('LOAD_FIELDS_DRIVER',myThid)
CADJ STORE theta = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE uvel, vvel = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CALL TIMER_START('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid)
CALL LOAD_FIELDS_DRIVER( myTime, myIter, myThid )
CALL TIMER_STOP ('LOAD_FIELDS_DRIVER [FORWARD_STEP]',myThid)
IF ( myIter .EQ. nIter0 )
& CALL CTRL_MAP_FORCING (myThid)
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('DO_ATMOSPHERIC_PHYS',myThid)
CALL TIMER_START('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',myThid)
CALL DO_ATMOSPHERIC_PHYS( myTime, myIter, myThid )
CALL TIMER_STOP ('DO_ATMOSPHERIC_PHYS [FORWARD_STEP]',myThid)
CADJ STORE surfaceforcingtice = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('DO_OCEANIC_PHYS',myThid)
CALL TIMER_START('DO_OCEANIC_PHYS [FORWARD_STEP]',myThid)
CALL DO_OCEANIC_PHYS( myTime, myIter, myThid )
CALL TIMER_STOP ('DO_OCEANIC_PHYS [FORWARD_STEP]',myThid)
CADJ STORE EmPmR = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE pmepr = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
c
CADJ STORE rhoInSitu = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE surfaceForcingS = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE surfaceForcingT = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE surfaceForcingTice = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE IVDConvCount = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
c
CADJ STORE Kwx = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE Kwy = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CADJ STORE Kwz = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
c
c
IF ( .NOT.staggerTimeStep ) THEN
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('THERMODYNAMICS',myThid)
CADJ STORE salt = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid)
CALL THERMODYNAMICS( myTime, myIter, myThid )
CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid)
ENDIF
IF ( implicitIntGravWave ) THEN
CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
CALL DO_STAGGER_FIELDS_EXCHANGES( myTime, myIter, myThid )
CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
ENDIF
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('DYNAMICS',myThid)
CALL TIMER_START('DYNAMICS [FORWARD_STEP]',myThid)
CALL DYNAMICS( myTime, myIter, myThid )
CALL TIMER_STOP ('DYNAMICS [FORWARD_STEP]',myThid)
myIter = nIter0 + iLoop
myTime = startTime + deltaTClock * float(iLoop)
IF ( momStepping ) THEN
CALL TIMER_START('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid)
CALL SOLVE_FOR_PRESSURE(myTime, myIter, myThid)
CALL TIMER_STOP ('SOLVE_FOR_PRESSURE [FORWARD_STEP]',myThid)
ENDIF
CALL TIMER_START('MOM_CORRECTION_STEP [FORWARD_STEP]',myThid)
CALL MOMENTUM_CORRECTION_STEP(myTime, myIter, myThid)
CALL TIMER_STOP ('MOM_CORRECTION_STEP [FORWARD_STEP]',myThid)
IF (exactConserv) THEN
CALL TIMER_START('UPDATE_ETAH [FORWARD_STEP]',myThid)
CALL UPDATE_ETAH( myTime, myIter, myThid )
CALL TIMER_STOP ('UPDATE_ETAH [FORWARD_STEP]',myThid)
ENDIF
IF ( staggerTimeStep ) THEN
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('DO_STAGGER_FIELDS_EXCH.',myThid)
CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
CALL DO_STAGGER_FIELDS_EXCHANGES( myTime, myIter, myThid )
CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('THERMODYNAMICS',myThid)
CALL TIMER_START('THERMODYNAMICS [FORWARD_STEP]',myThid)
CALL THERMODYNAMICS( myTime, myIter, myThid )
CALL TIMER_STOP ('THERMODYNAMICS [FORWARD_STEP]',myThid)
ENDIF
CADJ STORE totphihyd = comlev1, key = ikey_dynamics,
CADJ & kind = isbyte
CALL TIMER_START('TRC_CORRECTION_STEP [FORWARD_STEP]',myThid)
CALL TRACERS_CORRECTION_STEP(myTime, myIter, myThid)
CALL TIMER_STOP ('TRC_CORRECTION_STEP [FORWARD_STEP]',myThid)
CALL TIMER_START('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
CALL DO_FIELDS_BLOCKING_EXCHANGES( myThid )
CALL TIMER_STOP ('BLOCKING_EXCHANGES [FORWARD_STEP]',myThid)
CALL TIMER_START('DO_STATEVARS_TAVE [FORWARD_STEP]',myThid)
CALL DO_STATEVARS_TAVE( myTime, myIter, myThid )
CALL TIMER_STOP ('DO_STATEVARS_TAVE [FORWARD_STEP]',myThid)
IF ( .NOT.useOffLine ) THEN
CALL TIMER_START('MONITOR [FORWARD_STEP]',myThid)
CALL MONITOR( myTime, myIter, myThid )
CALL TIMER_STOP ('MONITOR [FORWARD_STEP]',myThid)
ENDIF
CALL TIMER_START('COST_TILE [FORWARD_STEP]',myThid)
CALL COST_TILE ( myTime, myIter, myThid )
CALL TIMER_STOP ('COST_TILE [FORWARD_STEP]',myThid)
modelEnd = myTime.EQ.endTime .OR. myIter.EQ.nEndIter
IF ( useSIGREG ) THEN
modelEnd = modelEnd .OR. ( i_got_signal.GT.0 )
ENDIF
CALL TIMER_START('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
CALL DO_THE_MODEL_IO( modelEnd, myTime, myIter, myThid )
CALL TIMER_STOP ('DO_THE_MODEL_IO [FORWARD_STEP]',myThid)
CALL TIMER_START('DO_WRITE_PICKUP [FORWARD_STEP]',myThid)
CALL DO_WRITE_PICKUP( modelEnd, myTime, myIter, myThid )
CALL TIMER_STOP ('DO_WRITE_PICKUP [FORWARD_STEP]',myThid)
IF ( useSIGREG ) THEN
IF ( modelEnd .AND. i_got_signal.GT.0 ) THEN
STOP 'Checkpoint completed -- killed by signal handler'
ENDIF
ENDIF
CALL AUTODIFF_INADMODE_SET( myThid )
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE('FORWARD_STEP',myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE FREESURF_RESCALE_G(
I bi, bj, k,
U gTracer,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE FREEZE( bi, bj, iMin, iMax, jMin, jMax,
I K,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER K
INTEGER myThid
INTEGER i,j
Real*8 Tfreezing
Tfreezing=-1.9d0
DO j=jMin,jMax
DO i=iMin,iMax
IF (gT(i,j,k,bi,bj) .LT. Tfreezing) THEN
gT(i,j,k,bi,bj)=Tfreezing
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE FREEZE_SURFACE( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER bi,bj,i,j,k
Real*8 Tfreezing
IF ( usingPCoords ) THEN
k = Nr
ELSE
k = 1
ENDIF
Tfreezing = -1.9d0
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
IF (theta(i,j,k,bi,bj) .LT. Tfreezing) THEN
surfaceForcingTice(i,j,bi,bj) =
& ( Tfreezing - theta(i,j,k,bi,bj) )
& *drF(k)*hFacC(i,j,k,bi,bj) / dTtracerLev(k)
theta(i,j,k,bi,bj) = Tfreezing
ELSE
surfaceForcingTice(i,j,bi,bj) = 0.d0
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE GRAD_SIGMA(
I bi, bj, iMin, iMax, jMin, jMax, K,
I rhoK, sigKm1, sigKp1,
O sigmaX, sigmaY, sigmaR,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,iMin,iMax,jMin,jMax,K
Real*8 rhoK(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 sigKm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 sigKp1(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 sigmaX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaY(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 sigmaR(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
INTEGER myThid
INTEGER i,j
Real*8 rhoLoc(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rhoLoc(i,j) = rhoK(i,j)
ENDDO
ENDDO
IF ( useCubedSphereExchange ) THEN
CALL FILL_CS_CORNER_TR_RL( 1, .FALSE.,
& rhoLoc, bi,bj, myThid )
ENDIF
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx
sigmaX(i,j,k)=maskW(i,j,k,bi,bj)
& *recip_dxC(i,j,bi,bj)
& *(rhoLoc(i,j)-rhoLoc(i-1,j))
ENDDO
ENDDO
IF ( useCubedSphereExchange ) THEN
CALL FILL_CS_CORNER_TR_RL( 2, .FALSE.,
& rhoLoc, bi,bj, myThid )
ENDIF
DO j=1-Oly+1,sNy+Oly
DO i=1-Olx,sNx+Olx
sigmaY(i,j,k)=maskS(i,j,k,bi,bj)
& *recip_dyC(i,j,bi,bj)
& *(rhoLoc(i,j)-rhoLoc(i,j-1))
ENDDO
ENDDO
IF (K.EQ.1) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
sigmaR(i,j,k)=0.
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
sigmaR(i,j,k)= maskC(i,j,k,bi,bj)
& *recip_drC(k)*rkSign
& *(sigKp1(i,j)-sigKm1(i,j))
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE IMPLDIFF( bi, bj, iMin, iMax, jMin, jMax,
I tracerId, KappaRX, recip_hFac,
U gXNm1,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER tracerId
Real*8 KappaRX(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 recip_hFac(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 gXnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER myThid
INTEGER i,j,k
Real*8 deltaTX(Nr)
Real*8 gYnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 a(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 b(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 c(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 bet(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 gam(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
IF ( tracerId.GE.1 ) THEN
DO k=1,Nr
deltaTX(k) = dTtracerLev(k)
ENDDO
ELSE
DO k=1,Nr
deltaTX(k) = deltaTmom
ENDDO
ENDIF
DO k=1,Nr
DO j=jMin,jMax
DO i=iMin,iMax
gYNm1(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
a(i,j,1) = 0.d0
ENDDO
ENDDO
DO k=2,Nr
DO j=jMin,jMax
DO i=iMin,iMax
a(i,j,k) = -deltaTX(k)*recip_hFac(i,j,k,bi,bj)*recip_drF(k)
& *recip_deepFac2C(k)*recip_rhoFacC(k)
& *KappaRX(i,j, k )*recip_drC( k )
& *deepFac2F(k)*rhoFacF(k)
IF (recip_hFac(i,j,k-1,bi,bj).EQ.0.) a(i,j,k)=0.
ENDDO
ENDDO
ENDDO
DO k=1,Nr-1
DO j=jMin,jMax
DO i=iMin,iMax
c(i,j,k) = -deltaTX(k)*recip_hFac(i,j,k,bi,bj)*recip_drF(k)
& *recip_deepFac2C(k)*recip_rhoFacC(k)
& *KappaRX(i,j,k+1)*recip_drC(k+1)
& *deepFac2F(k+1)*rhoFacF(k+1)
IF (recip_hFac(i,j,k+1,bi,bj).EQ.0.) c(i,j,k)=0.
ENDDO
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
c(i,j,Nr) = 0.d0
ENDDO
ENDDO
DO k=1,Nr
DO j=jMin,jMax
DO i=iMin,iMax
b(i,j,k) = 1.d0 - c(i,j,k) - a(i,j,k)
ENDDO
ENDDO
ENDDO
DO k=1,Nr
DO j=jMin,jMax
DO i=iMin,iMax
bet(i,j,k) = 1.d0
gam(i,j,k) = 0.d0
ENDDO
ENDDO
ENDDO
IF (Nr.GT.1) THEN
k = 1
DO j=jMin,jMax
DO i=iMin,iMax
IF (b(i,j,1).NE.0.) bet(i,j,1) = 1.d0 / b(i,j,1)
ENDDO
ENDDO
ENDIF
IF (Nr.GE.2) THEN
CADJ loop = sequential
DO k=2,Nr
DO j=jMin,jMax
DO i=iMin,iMax
gam(i,j,k) = c(i,j,k-1)*bet(i,j,k-1)
IF ( ( b(i,j,k) - a(i,j,k)*gam(i,j,k) ) .NE. 0.)
& bet(i,j,k) = 1.d0 / ( b(i,j,k) - a(i,j,k)*gam(i,j,k) )
ENDDO
ENDDO
ENDDO
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gYNm1(i,j,1,bi,bj) = gXNm1(i,j,1,bi,bj)*bet(i,j,1)
ENDDO
ENDDO
DO k=2,Nr
DO j=jMin,jMax
DO i=iMin,iMax
gYnm1(i,j,k,bi,bj) = bet(i,j,k)*
& (gXnm1(i,j,k,bi,bj) - a(i,j,k)*gYnm1(i,j,k-1,bi,bj))
ENDDO
ENDDO
ENDDO
CADJ loop = sequential
DO k=Nr-1,1,-1
DO j=jMin,jMax
DO i=iMin,iMax
gYnm1(i,j,k,bi,bj)=gYnm1(i,j,k,bi,bj)
& -gam(i,j,k+1)*gYnm1(i,j,k+1,bi,bj)
ENDDO
ENDDO
ENDDO
DO k=1,Nr
DO j=jMin,jMax
DO i=iMin,iMax
gXnm1(i,j,k,bi,bj)=gYnm1(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_AUTODIFF( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER I, J, K
TsurfCor=0.d0
SsurfCor=0.d0
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO K=1,Nr
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
ENDDO
ENDDO
ENDDO
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
dEtaHdt(i,j,bi,bj) = 0.d0
PmEpR(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_CARTESIAN_GRID( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER iG, jG, bi, bj, i, j
Real*8 xG0, yG0
Real*8 xGloc(1-Olx:sNx+Olx+1,1-Oly:sNy+Oly+1)
Real*8 yGloc(1-Olx:sNx+Olx+1,1-Oly:sNy+Oly+1)
INTEGER iGl,jGl
iGl(i,bi) = 1+MOD(myXGlobalLo-1+(bi-1)*sNx+i+Olx*Nx-1,Nx)
jGl(j,bj) = 1+MOD(myYGlobalLo-1+(bj-1)*sNy+j+Oly*Ny-1,Ny)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
jG = myYGlobalLo + (bj-1)*sNy
iG = myXGlobalLo + (bi-1)*sNx
cC- note: does not work for non-uniform delX or delY
xG0 = xgOrigin
DO i=1, iG-1
xG0 = xG0 + delX(i)
ENDDO
DO i=1, Olx
xG0 = xG0 - delX( 1+MOD(Olx*Nx-1+iG-i,Nx) )
ENDDO
yG0 = ygOrigin
DO j=1, jG-1
yG0 = yG0 + delY(j)
ENDDO
DO j=1, Oly
yG0 = yG0 - delY( 1+MOD(Oly*Ny-1+jG-j,Ny) )
ENDDO
DO j=1-Oly,sNy+Oly +1
xGloc(1-Olx,j) = xG0
DO i=1-Olx,sNx+Olx
xGloc(i+1,j) = xGloc(i,j) + delX( iGl(i,bi) )
ENDDO
ENDDO
DO i=1-Olx,sNx+Olx +1
yGloc(i,1-Oly) = yG0
DO j=1-Oly,sNy+Oly
yGloc(i,j+1) = yGloc(i,j) + delY( jGl(j,bj) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
xG(i,j,bi,bj) = xGloc(i,j)
yG(i,j,bi,bj) = yGloc(i,j)
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
xC(i,j,bi,bj) = 0.25d0*(
& xGloc(i,j)+xGloc(i+1,j)+xGloc(i,j+1)+xGloc(i+1,j+1) )
yC(i,j,bi,bj) = 0.25d0*(
& yGloc(i,j)+yGloc(i+1,j)+yGloc(i,j+1)+yGloc(i+1,j+1) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dxF(i,j,bi,bj) = delX( iGl(i,bi) )
dyF(i,j,bi,bj) = delY( jGl(j,bj) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dxG(i,j,bi,bj) = delX( iGl(i,bi) )
dyG(i,j,bi,bj) = delY( jGl(j,bj) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dxC(i,j,bi,bj) = 0.
dyC(i,j,bi,bj) = 0.
dxV(i,j,bi,bj) = 0.
dyU(i,j,bi,bj) = 0.
rAw(i,j,bi,bj) = 0.
rAs(i,j,bi,bj) = 0.
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx ! NOTE range
dxC(i,j,bi,bj) = 0.5d0*(dxF(i,j,bi,bj)+dxF(i-1,j,bi,bj))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly ! NOTE range
DO i=1-Olx,sNx+Olx
dyC(i,j,bi,bj) = 0.5d0*(dyF(i,j,bi,bj)+dyF(i,j-1,bi,bj))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly ! NOTE range
DO i=1-Olx+1,sNx+Olx ! NOTE range
dxV(i,j,bi,bj) = 0.5d0*(dxG(i,j,bi,bj)+dxG(i-1,j,bi,bj))
dyU(i,j,bi,bj) = 0.5d0*(dyG(i,j,bi,bj)+dyG(i,j-1,bi,bj))
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rA (i,j,bi,bj) = dxF(i,j,bi,bj)*dyF(i,j,bi,bj)
rAw(i,j,bi,bj) = dxC(i,j,bi,bj)*dyG(i,j,bi,bj)
rAs(i,j,bi,bj) = dxG(i,j,bi,bj)*dyC(i,j,bi,bj)
rAz(i,j,bi,bj) = dxV(i,j,bi,bj)*dyU(i,j,bi,bj)
tanPhiAtU(i,j,bi,bj) = 0.
tanPhiAtV(i,j,bi,bj) = 0.
angleCosC(i,j,bi,bj) = 1.
angleSinC(i,j,bi,bj) = 0.
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
cosFacU(j,bi,bj)=1.
cosFacV(j,bi,bj)=1.
sqcosFacU(j,bi,bj)=1.
sqcosFacV(j,bi,bj)=1.
ENDDO
ENDDO
ENDDO
IF ( myThid .EQ. 1 ) THEN
IF ( latBandClimRelax.EQ.UNSET_RL ) THEN
latBandClimRelax = 0.
DO j=1,Ny
latBandClimRelax = latBandClimRelax + delY(j)
ENDDO
latBandClimRelax = latBandClimRelax*3.d0
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_CG2D( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /CG2D_I_L/ cg2dNormaliseRHS
LOGICAL cg2dNormaliseRHS
COMMON /CG2D_I_R/
& aW2d, aS2d, aC2d,
& pW, pS, pC,
& cg2dNorm, cg2dTolerance
Real*8 aW2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 aS2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 aC2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 cg2dNorm, cg2dTolerance
COMMON /CG2D_I_WK_R/
& cg2d_q, cg2d_r, cg2d_s
Real*8 cg2d_q(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
Real*8 cg2d_r(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
Real*8 cg2d_s(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
INTEGER myThid
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER bi, bj
INTEGER i, j, k, ks
Real*8 faceArea
Real*8 myNorm
Real*8 aC, aCw, aCs
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
aW2d(i,j,bi,bj) = 0.d0
aS2d(i,j,bi,bj) = 0.d0
aC2d(i,j,bi,bj) = 0.d0
pW(i,j,bi,bj) = 0.d0
pS(i,j,bi,bj) = 0.d0
pC(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
DO j=1-1,sNy+1
DO i=1-1,sNx+1
cg2d_q(i,j,bi,bj) = 0.d0
cg2d_r(i,j,bi,bj) = 0.d0
cg2d_s(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
myNorm = 0.d0
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
aW2d(i,j,bi,bj) = 0.d0
aS2d(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
DO k=1,Nr
DO j=1,sNy
DO i=1,sNx
faceArea = dyG(i,j,bi,bj)*drF(k)
& *hFacW(i,j,k,bi,bj)
aW2d(i,j,bi,bj) = aW2d(i,j,bi,bj)
& + implicSurfPress*implicDiv2DFlow
& *faceArea*recip_dxC(i,j,bi,bj)
faceArea = dxG(i,j,bi,bj)*drF(k)
& *hFacS(i,j,k,bi,bj)
aS2d(i,j,bi,bj) = aS2d(i,j,bi,bj)
& + implicSurfPress*implicDiv2DFlow
& *faceArea*recip_dyC(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
DO j=1,sNy
DO i=1,sNx
myNorm = MAX(ABS(aW2d(i,j,bi,bj)),myNorm)
myNorm = MAX(ABS(aS2d(i,j,bi,bj)),myNorm)
ENDDO
ENDDO
ENDDO
ENDDO
CALL GLOBAL_MAX_R8 ( myNorm, myThid )
IF ( myNorm .NE. 0.d0 ) THEN
myNorm = 1.d0/myNorm
ELSE
myNorm = 1.d0
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
aW2d(i,j,bi,bj) = aW2d(i,j,bi,bj)*myNorm
aS2d(i,j,bi,bj) = aS2d(i,j,bi,bj)*myNorm
ENDDO
ENDDO
ENDDO
ENDDO
CALL EXCH_UV_XY_RS( aW2d, aS2d, .FALSE., myThid )
IF ( myThid .EQ. 1 ) THEN
cg2dNorm = myNorm
cg2dNormaliseRHS = cg2dTargetResWunit.LE.0.
IF (cg2dNormaliseRHS) THEN
cg2dTolerance = cg2dTargetResidual
ELSE
cg2dTolerance = cg2dNorm * cg2dTargetResWunit
& * globalArea / deltaTmom
ENDIF
ENDIF
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(2A,1PE23.16)') 'INI_CG2D: ',
& 'CG2D normalisation factor = ', cg2dNorm
CALL PRINT_MESSAGE( msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
IF (.NOT.cg2dNormaliseRHS) THEN
WRITE(msgBuf,'(2A,1PE22.15,A,1PE16.10,A)') 'INI_CG2D: ',
& 'cg2dTolerance =', cg2dTolerance, ' (Area=',globalArea,')'
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
ENDIF
WRITE(msgBuf,*) ' '
CALL PRINT_MESSAGE( msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=0,sNy+1
DO i=0,sNx+1
ks = ksurfC(i,j,bi,bj)
aC2d(i,j,bi,bj) = -(
& aW2d(i,j,bi,bj) + aW2d(i+1,j, bi,bj)
& +aS2d(i,j,bi,bj) + aS2d( i,j+1,bi,bj)
& +freeSurfFac*myNorm*recip_Bo(i,j,bi,bj)*deepFac2F(ks)
& *rA(i,j,bi,bj)/deltaTMom/deltaTfreesurf
& )
ENDDO
ENDDO
DO j=1,sNy
DO i=1,sNx
aC = aC2d( i, j, bi,bj)
aCs = aC2d( i,j-1,bi,bj)
aCw = aC2d(i-1,j, bi,bj)
IF ( aC .EQ. 0. ) THEN
pC(i,j,bi,bj) = 1.d0
ELSE
pC(i,j,bi,bj) = 1.d0 / aC
ENDIF
IF ( aC + aCw .EQ. 0. ) THEN
pW(i,j,bi,bj) = 0.
ELSE
pW(i,j,bi,bj) =
& -aW2d(i,j,bi,bj)/((cg2dpcOffDFac *(aCw+aC))**2 )
ENDIF
IF ( aC + aCs .EQ. 0. ) THEN
pS(i,j,bi,bj) = 0.
ELSE
pS(i,j,bi,bj) =
& -aS2d(i,j,bi,bj)/((cg2dpcOffDFac *(aCs+aC))**2 )
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
CALL EXCH_XY_RS( pC, myThid )
CALL EXCH_UV_XY_RS( pW, pS, .FALSE., myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_CORI( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
CHARACTER*(*) mon_head
PARAMETER ( mon_head = '%MON' )
CHARACTER*(*) mon_foot_min
PARAMETER ( mon_foot_min = '_min' )
CHARACTER*(*) mon_foot_max
PARAMETER ( mon_foot_max = '_max' )
CHARACTER*(*) mon_foot_sd
PARAMETER ( mon_foot_sd = '_sd' )
CHARACTER*(*) mon_foot_mean
PARAMETER ( mon_foot_mean = '_mean' )
CHARACTER*(*) mon_foot_volint
PARAMETER ( mon_foot_volint = '_volint' )
CHARACTER*(*) mon_foot_volmean
PARAMETER ( mon_foot_volmean = '_volmean' )
CHARACTER*(*) mon_foot_del2
PARAMETER ( mon_foot_del2 = '_del2' )
CHARACTER*(*) mon_foot_vol
PARAMETER ( mon_foot_vol = '_vol' )
CHARACTER*(*) mon_string_none
PARAMETER ( mon_string_none = 'NONE' )
COMMON /MON_I/ mon_ioUnit, mon_prefL
INTEGER mon_ioUnit
INTEGER mon_prefL
COMMON /MON_C/ mon_pref
CHARACTER*(MAX_LEN_MBUF) mon_pref
COMMON /MON_R/ monSolutionMaxRange
Real*8 monSolutionMaxRange
COMMON /MON_L/
& mon_write_stdout, mon_write_mnc
LOGICAL mon_write_stdout, mon_write_mnc
COMMON /MON_F/
& mon_fname
CHARACTER*(MAX_LEN_FNAM) mon_fname
INTEGER myThid
LOGICAL MASTER_CPU_IO
EXTERNAL MASTER_CPU_IO
INTEGER bi,bj
INTEGER i, j
Real*8 facGrid
INTEGER myTile, iG, iLen
CHARACTER*(MAX_LEN_FNAM) fName
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER ILNBLNK
EXTERNAL ILNBLNK
IF ( useConstantF ) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fCori(i,j,bi,bj) = f0
fCoriG(i,j,bi,bj) = f0
fCoriCos(i,j,bi,bj)=0.d0
ENDDO
ENDDO
ENDDO
ENDDO
ELSEIF ( useBetaPlaneF ) THEN
facGrid = 1.d0
IF ( usingSphericalPolarGrid
& .OR. usingCurvilinearGrid ) facGrid = deg2rad*rSphere
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fCori(i,j,bi,bj) = f0+beta*yC(i,j,bi,bj)*facGrid
fCoriG(i,j,bi,bj) = f0+beta* yG(i,j,bi,bj)*facGrid
fCoriCos(i,j,bi,bj)=0.d0
ENDDO
ENDDO
ENDDO
ENDDO
ELSEIF ( useSphereF ) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fCori(i,j,bi,bj) =
& 2.d0*omega*sin(yC(i,j,bi,bj)*deg2rad)
fCoriG(i,j,bi,bj) =
& 2.d0*omega*sin(yG(i,j,bi,bj)*deg2rad)
fCoriCos(i,j,bi,bj)=
& 2.d0*omega*cos(yC(i,j,bi,bj)*deg2rad)
ENDDO
ENDDO
ENDDO
ENDDO
ELSE
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
fCori(i,j,bi,bj) = 0.d0
fCoriG(i,j,bi,bj) = 0.d0
fCoriCos(i,j,bi,bj)=0.d0
ENDDO
ENDDO
ENDDO
ENDDO
CALL READ_REC_XY_RS( 'fCoriC.bin', fCori, 1, 0, myThid )
CALL READ_REC_XY_RS( 'fCorCs.bin', fCoriCos,1, 0, myThid )
IF ( .NOT.useCubedSphereExchange ) THEN
CALL READ_REC_XY_RS('fCoriG.bin', fCoriG, 1, 0, myThid )
ELSE
IF ( myThid .EQ. 1 ) THEN
DO bj = 1,nSy
DO bi = 1,nSx
iG = bi+(myXGlobalLo-1)/sNx
myTile = iG
WRITE(fName,'(2A,I3.3,A)') 'fCoriG','.face',iG,'.bin'
iLen = ILNBLNK(fName)
WRITE(msgBuf,'(A,I6,2A)')
& ' Reading tile:', myTile, ' from file ', fName(1:iLen)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
CALL MDS_FACEF_READ_RS( fName, readBinaryPrec, 1,
& fCoriG, bi, bj, myThid )
ENDDO
ENDDO
ENDIF
ENDIF
CALL EXCH_XY_RS( fCori, myThid )
CALL EXCH_XY_RS( fCoriCos, myThid )
CALL EXCH_Z_3D_RS( fCoriG, 1, myThid )
ENDIF
IF ( MASTER_CPU_IO(myThid) ) THEN
IF (monitor_stdio) THEN
mon_write_stdout = .TRUE.
ELSE
mon_write_stdout = .FALSE.
ENDIF
mon_write_mnc = .FALSE.
ENDIF
CALL MON_SET_PREF( mon_string_none, myThid )
CALL MON_PRINTSTATS_RS(1,fCori,'fCori',myThid)
CALL MON_PRINTSTATS_RS(1,fCoriG,'fCoriG',myThid)
CALL MON_PRINTSTATS_RS(1,fCoriCos,'fCoriCos',myThid)
IF ( MASTER_CPU_IO(myThid) ) THEN
mon_write_stdout = .FALSE.
mon_write_mnc = .FALSE.
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_CURVILINEAR_GRID( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
LOGICAL anglesAreSet
COMMON /LOCAL_INI_CURVILINEAR_GRID/ anglesAreSet
INTEGER bi,bj
INTEGER i,j
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER fp
INTEGER iG, jG, iL, iLen
CHARACTER*(MAX_LEN_FNAM) fName
CHARACTER*(MAX_LEN_MBUF) tmpBuf
INTEGER ILNBLNK
EXTERNAL ILNBLNK
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
xC(i,j,bi,bj)=0.
yC(i,j,bi,bj)=0.
xG(i,j,bi,bj)=0.
yG(i,j,bi,bj)=0.
dxC(i,j,bi,bj)=0.
dyC(i,j,bi,bj)=0.
dxG(i,j,bi,bj)=0.
dyG(i,j,bi,bj)=0.
dxF(i,j,bi,bj)=0.
dyF(i,j,bi,bj)=0.
dxV(i,j,bi,bj)=0.
dyU(i,j,bi,bj)=0.
rA(i,j,bi,bj)=0.
rAz(i,j,bi,bj)=0.
rAw(i,j,bi,bj)=0.
rAs(i,j,bi,bj)=0.
tanPhiAtU(i,j,bi,bj)=0.
tanPhiAtV(i,j,bi,bj)=0.
angleCosC(i,j,bi,bj)=1.
angleSinC(i,j,bi,bj)=0.
cosFacU(j,bi,bj)=1.
cosFacV(j,bi,bj)=1.
sqCosFacU(j,bi,bj)=1.
sqCosFacV(j,bi,bj)=1.
ENDDO
ENDDO
ENDDO
ENDDO
fp = precFloat64
CALL BARRIER(myThid)
IF ( myThid .EQ. 1 ) THEN
DO bj = 1,nSy
DO bi = 1,nSx
iG = bi+(myXGlobalLo-1)/sNx
jG = bj+(myYGlobalLo-1)/sNy
WRITE(tmpBuf,'(2(A,I3))') 'tile:',iG,' ,',jG
iG = iG + (jG-1)*(nSx*nPx)
iLen = ILNBLNK(horizGridFile)
IF ( iLen .EQ. 0 ) THEN
WRITE(fName,'("tile",I3.3,".mitgrid")') iG
ELSE
WRITE(fName,'(2A,I3.3,A)') horizGridFile(1:iLen),
& '.face',iG,'.bin'
ENDIF
iLen = ILNBLNK(fName)
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(3A)') tmpBuf(1:iL),
& ' ; Read from file ',fName(1:iLen)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid)
WRITE(msgBuf,'(A)') ' =>'
CALL MDS_FACEF_READ_RS( fName, fp, 1, xC, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'xC'
CALL MDS_FACEF_READ_RS( fName, fp, 2, yC, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'yC'
CALL MDS_FACEF_READ_RS( fName, fp, 3, dxF, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dxF'
CALL MDS_FACEF_READ_RS( fName, fp, 4, dyF, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dyF'
CALL MDS_FACEF_READ_RS( fName, fp, 5, rA, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'rA'
CALL MDS_FACEF_READ_RS( fName, fp, 6, xG, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'xG'
CALL MDS_FACEF_READ_RS( fName, fp, 7, yG, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'yG'
CALL MDS_FACEF_READ_RS( fName, fp, 8, dxV, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dxV'
CALL MDS_FACEF_READ_RS( fName, fp, 9, dyU, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dyU'
CALL MDS_FACEF_READ_RS( fName, fp,10, rAz, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'rAz'
CALL MDS_FACEF_READ_RS( fName, fp,11, dxC, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dxC'
CALL MDS_FACEF_READ_RS( fName, fp,12, dyC, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dyC'
CALL MDS_FACEF_READ_RS( fName, fp,13, rAw, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'rAw'
CALL MDS_FACEF_READ_RS( fName, fp,14, rAs, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'rAs'
CALL MDS_FACEF_READ_RS( fName, fp,15, dxG, bi, bj, myThid )
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'dxG'
CALL MDS_FACEF_READ_RS( fName, fp,16, dyG, bi, bj, myThid )
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'dyG'
iLen = ILNBLNK(horizGridFile)
IF ( iLen.GT.0 ) THEN
CALL MDS_FACEF_READ_RS(fName,fp,17,angleCosC,bi,bj,myThid)
iL = ILNBLNK(msgBuf)
WRITE(tmpBuf,'(A,1X,A)') msgBuf(1:iL),'AngleCS'
CALL MDS_FACEF_READ_RS(fName,fp,18,angleSinC,bi,bj,myThid)
iL = ILNBLNK(tmpBuf)
WRITE(msgBuf,'(A,1X,A)') tmpBuf(1:iL),'AngleSN'
anglesAreSet = .TRUE.
ELSE
anglesAreSet = .FALSE.
ENDIF
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid)
ENDDO
ENDDO
ENDIF
CALL EXCH_XY_RS(xC,myThid)
CALL EXCH_XY_RS(yC,myThid)
CALL EXCH_UV_AGRID_3D_RS( dxF, dyF, .FALSE., 1, myThid )
CALL EXCH_XY_RS(rA,myThid )
CALL EXCH_Z_3D_RS( xG, 1, myThid )
CALL EXCH_Z_3D_RS( yG, 1, myThid )
CALL EXCH_UV_BGRID_3D_RS( dxV, dyU, .FALSE., 1, myThid)
CALL EXCH_Z_3D_RS( rAz, 1, myThid )
CALL EXCH_UV_XY_RS(dxC,dyC,.FALSE.,myThid)
CALL EXCH_UV_XY_RS(rAw,rAs,.FALSE.,myThid)
CALL EXCH_UV_XY_RS(dyG,dxG,.FALSE.,myThid)
IF ( .NOT.anglesAreSet ) THEN
CALL CALC_ANGLES( myThid )
CALL BARRIER(myThid)
IF ( myThid .EQ. 1 ) THEN
anglesAreSet = .TRUE.
ENDIF
ENDIF
CALL EXCH_UV_AGRID_3D_RS(angleSinC,angleCosC,.TRUE., 1, myThid)
IF ( myThid .EQ. 1 ) THEN
IF ( .NOT.anglesAreSet .AND. use3dCoriolis ) THEN
WRITE(msgBuf,'(2A)')
& 'INI_CURVILINEAR_GRID: Angle of CurvilinearGrid not set',
& ' but needed for 3-D Coriolis'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R INI_CURVILINEAR_GRID'
ENDIF
ENDIF
IF ( debugLevel .GE. debLevB ) THEN
CALL PLOT_FIELD_XYRS( xC , 'Current xC ', 0, myThid )
CALL PLOT_FIELD_XYRS( yC , 'Current yC ', 0, myThid )
CALL PLOT_FIELD_XYRS( dxF , 'Current dxF ', 0, myThid )
CALL PLOT_FIELD_XYRS( dyF , 'Current dyF ', 0, myThid )
CALL PLOT_FIELD_XYRS( rA , 'Current rA ', 0, myThid )
CALL PLOT_FIELD_XYRS( xG , 'Current xG ', 0, myThid )
CALL PLOT_FIELD_XYRS( yG , 'Current yG ', 0, myThid )
CALL PLOT_FIELD_XYRS( dxV , 'Current dxV ', 0, myThid )
CALL PLOT_FIELD_XYRS( dyU , 'Current dyU ', 0, myThid )
CALL PLOT_FIELD_XYRS( rAz , 'Current rAz ', 0, myThid )
CALL PLOT_FIELD_XYRS( dxC , 'Current dxC ', 0, myThid )
CALL PLOT_FIELD_XYRS( dyC , 'Current dyC ', 0, myThid )
CALL PLOT_FIELD_XYRS( rAw , 'Current rAw ', 0, myThid )
CALL PLOT_FIELD_XYRS( rAs , 'Current rAs ', 0, myThid )
CALL PLOT_FIELD_XYRS( dxG , 'Current dxG ', 0, myThid )
CALL PLOT_FIELD_XYRS( dyG , 'Current dyG ', 0, myThid )
CALL PLOT_FIELD_XYRS(angleCosC, 'Current AngleCS ', 0, myThid )
CALL PLOT_FIELD_XYRS(angleSinC, 'Current AngleSN ', 0, myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_CYLINDER_GRID( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER iG, jG
INTEGER bi, bj
INTEGER i, j
Real*8 dtheta, thisRad, xG0, yG0
Real*8 xGloc(1-Olx:sNx+Olx+1,1-Oly:sNy+Oly+1)
Real*8 yGloc(1-Olx:sNx+Olx+1,1-Oly:sNy+Oly+1)
INTEGER iGl,jGl
iGl(i,bi) = 1+MOD(myXGlobalLo-1+(bi-1)*sNx+i+Olx*Nx-1,Nx)
jGl(j,bj) = 1+MOD(myYGlobalLo-1+(bj-1)*sNy+j+Oly*Ny-1,Ny)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
jG = myYGlobalLo + (bj-1)*sNy
iG = myXGlobalLo + (bi-1)*sNx
cC- note: does not work for non-uniform delX or delY
xG0 = xgOrigin
DO i=1, iG-1
xG0 = xG0 + delX(i)
ENDDO
DO i=1, Olx
xG0 = xG0 - delX( 1+mod(Olx*Nx-1+iG-i,Nx) )
ENDDO
yG0 = ygOrigin
DO j=1, jG-1
yG0 = yG0 + delY(j)
ENDDO
DO j=1, Oly
yG0 = yG0 - delY( 1+mod(Oly*Ny-1+jG-j,Ny) )
ENDDO
DO j=1-Oly,sNy+Oly +1
xGloc(1-Olx,j) = xG0
DO i=1-Olx,sNx+Olx
xGloc(i+1,j) = xGloc(i,j) + delX( iGl(i,bi) )
ENDDO
ENDDO
DO i=1-Olx,sNx+Olx +1
yGloc(i,1-Oly) = yG0
DO j=1-Oly,sNy+Oly
yGloc(i,j+1) = yGloc(i,j) + delY( jGl(j,bj) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
xG(i,j,bi,bj) = xGloc(i,j)
yG(i,j,bi,bj) = yGloc(i,j)
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
xC(i,j,bi,bj) = 0.25d0*(
& xGloc(i,j)+xGloc(i+1,j)+xGloc(i,j+1)+xGloc(i+1,j+1) )
yC(i,j,bi,bj) = 0.25d0*(
& yGloc(i,j)+yGloc(i+1,j)+yGloc(i,j+1)+yGloc(i+1,j+1) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
thisRad = yC(i,j,bi,bj)
dtheta = delX( iGl(i,bi) )
dxF(i,j,bi,bj) = thisRad*dtheta*deg2rad
dyF(i,j,bi,bj) = delY( jGl(j,bj) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
thisRad = 0.5d0*(yGloc(i,j)+yGloc(i+1,j))
dtheta = delX( iGl(i,bi) )
dxG(i,j,bi,bj) = thisRad*dtheta*deg2rad
dyG(i,j,bi,bj) = delY( jGl(j,bj) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dxC(i,j,bi,bj) = 0.
dyC(i,j,bi,bj) = 0.
dxV(i,j,bi,bj) = 0.
dyU(i,j,bi,bj) = 0.
rAw(i,j,bi,bj) = 0.
rAs(i,j,bi,bj) = 0.
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx ! NOTE range
dxC(i,j,bi,bj) = 0.5d0*(dxF(i,j,bi,bj)+dxF(i-1,j,bi,bj))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly ! NOTE range
DO i=1-Olx,sNx+Olx
dyC(i,j,bi,bj) = 0.5d0*(dyF(i,j,bi,bj)+dyF(i,j-1,bi,bj))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly ! NOTE range
DO i=1-Olx+1,sNx+Olx ! NOTE range
dxV(i,j,bi,bj) = 0.5d0*(dxG(i,j,bi,bj)+dxG(i-1,j,bi,bj))
dyU(i,j,bi,bj) = 0.5d0*(dyG(i,j,bi,bj)+dyG(i,j-1,bi,bj))
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rA (i,j,bi,bj) = dxF(i,j,bi,bj)*dyF(i,j,bi,bj)
rAw(i,j,bi,bj) = dxC(i,j,bi,bj)*dyG(i,j,bi,bj)
rAs(i,j,bi,bj) = dxG(i,j,bi,bj)*dyC(i,j,bi,bj)
rAz(i,j,bi,bj) = dxV(i,j,bi,bj)*dyU(i,j,bi,bj)
tanPhiAtU(i,j,bi,bj) = 0.
tanPhiAtV(i,j,bi,bj) = 0.
angleCosC(i,j,bi,bj) = 1.
angleSinC(i,j,bi,bj) = 0.
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
cosFacU(j,bi,bj)=1.
cosFacV(j,bi,bj)=1.
sqcosFacU(j,bi,bj)=1.
sqcosFacV(j,bi,bj)=1.
ENDDO
ENDDO ! bi
ENDDO ! bj
IF ( latBandClimRelax.EQ.UNSET_RL ) THEN
IF ( myThid .EQ. 1 ) THEN
latBandClimRelax = 0.
DO j=1,Ny
latBandClimRelax = latBandClimRelax + delY(j)
ENDDO
latBandClimRelax = latBandClimRelax*3.d0
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_DEPTHS( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER iG, jG
INTEGER bi, bj
INTEGER i, j
CHARACTER*(MAX_LEN_MBUF) msgBuf
IF (usingPCoords .AND. bathyFile .NE. ' '
& .AND. topoFile .NE. ' ' ) THEN
WRITE(msgBuf,'(A,A)')
& 'S/R INI_DEPTHS: both bathyFile & topoFile are specified:',
& ' select the right one !'
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'ABNORMAL END: S/R INI_DEPTHS'
ENDIF
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
R_low(i,j,bi,bj) = 0.d0
Ro_surf(i,j,bi,bj) = 0.d0
topoZ(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
IF (usingPCoords .OR. bathyFile .EQ. ' ') THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
R_low(i,j,bi,bj) = rF(Nr+1)
ENDDO
ENDDO
ENDDO
ENDDO
ELSE
CALL READ_REC_XY_RS( bathyFile, R_low, 1, 0, myThid )
ENDIF
CALL EXCH_XY_RS ( R_low, myThid )
IF ( debugLevel.GE.debLevB ) THEN
CALL PLOT_FIELD_XYRS( R_low, 'Bottom depths (ini_depths)',
& -1, myThid )
ENDIF
IF ( usingPCoords .AND. bathyFile.NE.' ' ) THEN
CALL READ_REC_XY_RS( bathyFile, Ro_surf, 1, 0, myThid )
ELSEIF ( topoFile.EQ.' ' ) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
Ro_surf(i,j,bi,bj) = rF(1)
ENDDO
ENDDO
ENDDO
ENDDO
ELSE
CALL READ_REC_XY_RS( topoFile, topoZ, 1, 0, myThid )
IF (buoyancyRelation .EQ. 'ATMOSPHERIC') THEN
CALL INI_P_GROUND( 2, topoZ,
O Ro_surf,
I myThid )
ELSEIF ( buoyancyRelation.EQ.'OCEANICP' ) THEN
WRITE(msgBuf,'(A,A)') 'S/R INI_DEPTHS: ',
& 'from topoFile (in m) to ref.bottom pressure: Not yet coded'
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'ABNORMAL END: S/R INI_DEPTHS'
ELSE
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
Ro_surf(i,j,bi,bj) = topoZ(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
ENDIF
CALL EXCH_XY_RS ( Ro_surf, myThid )
IF (usingPCoords) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
iG = myXGlobalLo-1+(bi-1)*sNx+i
jG = myYGlobalLo-1+(bj-1)*sNy+j
IF ( usingSphericalPolarGrid .AND.
& ABS(yC(i,j,bi,bj)).GE.90. )
& Ro_surf(i,j,bi,bj) = rF(Nr+1)
ENDDO
ENDDO
ENDDO
ENDDO
ELSE
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
iG = myXGlobalLo-1+(bi-1)*sNx+i
jG = myYGlobalLo-1+(bj-1)*sNy+j
IF ( usingSphericalPolarGrid .AND.
& ABS(yC(i,j,bi,bj)).GE.90. )
& R_low(i,j,bi,bj) = rF(1)
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
IF ( debugLevel.GE.debLevB ) THEN
CALL BARRIER(myThid)
CALL PLOT_FIELD_XYRS( Ro_surf,
& 'Surface reference r-position (ini_depths)',
& -1, myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_FIELDS( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER myThid
IF ( startTime .EQ. baseTime .AND. nIter0 .EQ. 0
& .AND. pickupSuff .EQ. ' ' ) THEN
CALL INI_VEL( myThid )
CALL INI_THETA( myThid )
CALL INI_SALT( myThid )
CALL INI_PSURF( myThid )
CALL INI_PRESSURE( myThid )
ELSEIF ( .NOT.useOffLine ) THEN
CALL READ_PICKUP( nIter0, myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_FORCING( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER i, j
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
fu (i,j,bi,bj) = 0.d0
fv (i,j,bi,bj) = 0.d0
Qnet (i,j,bi,bj) = 0.d0
EmPmR (i,j,bi,bj) = 0.d0
saltFlux (i,j,bi,bj) = 0.d0
SST (i,j,bi,bj) = 0.d0
SSS (i,j,bi,bj) = 0.d0
Qsw (i,j,bi,bj) = 0.d0
pLoad (i,j,bi,bj) = 0.d0
sIceLoad (i,j,bi,bj) = 0.d0
surfaceForcingU(i,j,bi,bj) = 0.d0
surfaceForcingV(i,j,bi,bj) = 0.d0
surfaceForcingT(i,j,bi,bj) = 0.d0
surfaceForcingS(i,j,bi,bj) = 0.d0
surfaceForcingTice(i,j,bi,bj) = 0.d0
taux0 (i,j,bi,bj) = 0.d0
taux1 (i,j,bi,bj) = 0.d0
tauy0 (i,j,bi,bj) = 0.d0
tauy1 (i,j,bi,bj) = 0.d0
Qnet0 (i,j,bi,bj) = 0.d0
Qnet1 (i,j,bi,bj) = 0.d0
EmPmR0 (i,j,bi,bj) = 0.d0
EmPmR1 (i,j,bi,bj) = 0.d0
saltFlux0 (i,j,bi,bj) = 0.d0
saltFlux1 (i,j,bi,bj) = 0.d0
SST0 (i,j,bi,bj) = 0.d0
SST1 (i,j,bi,bj) = 0.d0
SSS0 (i,j,bi,bj) = 0.d0
SSS1 (i,j,bi,bj) = 0.d0
Qnetm (i,j,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( doThetaClimRelax .AND.
& ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
lambdaThetaClimRelax(i,j,bi,bj) = 1.d0/tauThetaClimRelax
ELSE
lambdaThetaClimRelax(i,j,bi,bj) = 0.d0
ENDIF
IF ( doSaltClimRelax .AND.
& ABS(yC(i,j,bi,bj)).LE.latBandClimRelax ) THEN
lambdaSaltClimRelax(i,j,bi,bj) = 1.d0/tauSaltClimRelax
ELSE
lambdaSaltClimRelax(i,j,bi,bj) = 0.d0
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
CALL BARRIER(myThid)
IF ( zonalWindFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( zonalWindFile, ' ', fu, 0, myThid )
ENDIF
IF ( meridWindFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( meridWindFile, ' ', fv, 0, myThid )
ENDIF
IF ( surfQFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( surfQFile, ' ', Qnet, 0, myThid )
ELSEIF ( surfQnetFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( surfQnetFile, ' ', Qnet, 0, myThid )
ENDIF
IF ( EmPmRfile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( EmPmRfile, ' ', EmPmR, 0, myThid )
CALL BARRIER(myThid)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
EmPmR(i,j,bi,bj) = EmPmR(i,j,bi,bj)*rhoConstFresh
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
IF ( saltFluxFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( saltFluxFile, ' ', saltFlux, 0, myThid )
ENDIF
IF ( thetaClimFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( thetaClimFile, ' ', SST, 0, myThid )
ENDIF
IF ( saltClimFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( saltClimFile, ' ', SSS, 0, myThid )
ENDIF
IF ( lambdaThetaFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( lambdaThetaFile, ' ',
& lambdaThetaClimRelax, 0, myThid )
ENDIF
IF ( lambdaSaltFile .NE. ' ' ) THEN
CALL READ_FLD_XY_RS( lambdaSaltFile, ' ',
& lambdaSaltClimRelax, 0, myThid )
ENDIF
CALL EXCH_UV_XY_RS( fu,fv, .TRUE., myThid )
CALL EXCH_XY_RS( Qnet , myThid )
CALL EXCH_XY_RS( EmPmR, myThid )
CALL EXCH_XY_RS( saltFlux, myThid )
CALL EXCH_XY_RS( SST , myThid )
CALL EXCH_XY_RS( SSS , myThid )
CALL EXCH_XY_RS( lambdaThetaClimRelax, myThid )
CALL EXCH_XY_RS( lambdaSaltClimRelax , myThid )
CALL EXCH_XY_RS( Qnetm, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_GRID( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
CHARACTER*(*) mon_head
PARAMETER ( mon_head = '%MON' )
CHARACTER*(*) mon_foot_min
PARAMETER ( mon_foot_min = '_min' )
CHARACTER*(*) mon_foot_max
PARAMETER ( mon_foot_max = '_max' )
CHARACTER*(*) mon_foot_sd
PARAMETER ( mon_foot_sd = '_sd' )
CHARACTER*(*) mon_foot_mean
PARAMETER ( mon_foot_mean = '_mean' )
CHARACTER*(*) mon_foot_volint
PARAMETER ( mon_foot_volint = '_volint' )
CHARACTER*(*) mon_foot_volmean
PARAMETER ( mon_foot_volmean = '_volmean' )
CHARACTER*(*) mon_foot_del2
PARAMETER ( mon_foot_del2 = '_del2' )
CHARACTER*(*) mon_foot_vol
PARAMETER ( mon_foot_vol = '_vol' )
CHARACTER*(*) mon_string_none
PARAMETER ( mon_string_none = 'NONE' )
COMMON /MON_I/ mon_ioUnit, mon_prefL
INTEGER mon_ioUnit
INTEGER mon_prefL
COMMON /MON_C/ mon_pref
CHARACTER*(MAX_LEN_MBUF) mon_pref
COMMON /MON_R/ monSolutionMaxRange
Real*8 monSolutionMaxRange
COMMON /MON_L/
& mon_write_stdout, mon_write_mnc
LOGICAL mon_write_stdout, mon_write_mnc
COMMON /MON_F/
& mon_fname
CHARACTER*(MAX_LEN_FNAM) mon_fname
INTEGER myThid
LOGICAL MASTER_CPU_IO
EXTERNAL MASTER_CPU_IO
CHARACTER*(MAX_LEN_MBUF) msgBuf
CALL LOAD_GRID_SPACING( myThid )
CALL INI_VERTICAL_GRID( myThid )
IF ( usingCartesianGrid ) THEN
CALL INI_CARTESIAN_GRID( myThid )
ELSEIF ( usingSphericalPolarGrid ) THEN
CALL INI_SPHERICAL_POLAR_GRID( myThid )
ELSEIF ( usingCurvilinearGrid ) THEN
CALL INI_CURVILINEAR_GRID( myThid )
ELSEIF ( usingCylindricalGrid ) THEN
CALL INI_CYLINDER_GRID( myThid )
ELSE
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(2A)') 'S/R INI_GRID: ',
& 'No grid coordinate system has been selected'
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'ABNORMAL END: S/R INI_GRID'
ENDIF
ENDIF
IF ( MASTER_CPU_IO(myThid) ) THEN
IF (monitor_stdio) THEN
mon_write_stdout = .TRUE.
ELSE
mon_write_stdout = .FALSE.
ENDIF
mon_write_mnc = .FALSE.
ENDIF
CALL MON_PRINTSTATS_RS(1,xC,'XC',myThid)
CALL MON_PRINTSTATS_RS(1,xG,'XG',myThid)
CALL MON_PRINTSTATS_RS(1,dxC,'DXC',myThid)
CALL MON_PRINTSTATS_RS(1,dxF,'DXF',myThid)
CALL MON_PRINTSTATS_RS(1,dxG,'DXG',myThid)
CALL MON_PRINTSTATS_RS(1,dxV,'DXV',myThid)
CALL MON_PRINTSTATS_RS(1,yC,'YC',myThid)
CALL MON_PRINTSTATS_RS(1,yG,'YG',myThid)
CALL MON_PRINTSTATS_RS(1,dyC,'DYC',myThid)
CALL MON_PRINTSTATS_RS(1,dyF,'DYF',myThid)
CALL MON_PRINTSTATS_RS(1,dyG,'DYG',myThid)
CALL MON_PRINTSTATS_RS(1,dyU,'DYU',myThid)
CALL MON_PRINTSTATS_RS(1,rA,'RA',myThid)
CALL MON_PRINTSTATS_RS(1,rAw,'RAW',myThid)
CALL MON_PRINTSTATS_RS(1,rAs,'RAS',myThid)
CALL MON_PRINTSTATS_RS(1,rAz,'RAZ',myThid)
CALL MON_PRINTSTATS_RS(1,angleCosC,'AngleCS',myThid)
CALL MON_PRINTSTATS_RS(1,angleSinC,'AngleSN',myThid)
IF ( MASTER_CPU_IO(myThid) ) THEN
mon_write_stdout = .FALSE.
mon_write_mnc = .FALSE.
ENDIF
CALL BARRIER(myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_HFAC( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER I, J, K
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO K=1, Nr
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
hFacC(I,J,K,bi,bj) = 0.d0
hFacS(I,J,K,bi,bj) = 0.d0
hFacW(I,J,K,bi,bj) = 0.d0
maskC(I,J,K,bi,bj) = 0.d0
maskS(I,J,K,bi,bj) = 0.d0
maskW(I,J,K,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_LINEAR_PHISURF( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
Real*8 tileArea(nSx,nSy), threadArea
COMMON / LOCAL_INI_PHISURF / tileArea
Real*8 topoHloc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi, bj
INTEGER I, J, K
Real*8 pLoc, rhoLoc
Real*8 dPIdp
CHARACTER*(MAX_LEN_MBUF) msgBuf
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
Bo_surf(I,J,bi,bj) = 0.d0
recip_Bo(I,J,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
threadArea = 0.d0
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
tileArea(bi,bj) = 0.d0
DO j=1,sNy
DO i=1,sNx
tileArea(bi,bj) = tileArea(bi,bj)
& + rA(i,j,bi,bj)*maskInC(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
C_jmc: apply GLOBAL_SUM to thread-local variable (not in common block)
CALL GLOBAL_SUM_TILE_RL( tileArea, threadArea, myThid )
IF ( myThid .EQ. 1 ) THEN
globalArea = threadArea
msgBuf(1:1) = ' '
DO bj = 1,nSy
DO bi = 1,nSx
IF ( tileArea(bi,bj).EQ.0.d0 ) THEN
WRITE(msgBuf,'(A,I6,I6)') 'Empty tile bi,bj=', bi, bj
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
ENDIF
ENDDO
ENDDO
IF ( msgBuf(1:1).NE.' ' ) THEN
WRITE(msgBuf,'(A)') ' '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
ENDIF
ENDIF
IF ( buoyancyRelation .EQ. 'OCEANIC' ) THEN
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
Bo_surf(I,J,bi,bj) = gBaro
recip_Bo(I,J,bi,bj) = 1.d0 / gBaro
ENDDO
ENDDO
ENDDO
ENDDO
ELSEIF ( uniformLin_PhiSurf ) THEN
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
Bo_surf(I,J,bi,bj) = recip_rhoConst
recip_Bo(I,J,bi,bj) = rhoConst
ENDDO
ENDDO
ENDDO
ENDDO
ELSEIF ( buoyancyRelation .EQ. 'OCEANICP' ) THEN
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
IF ( Ro_surf(I,J,bi,bj).GT.0.d0
& .AND. ksurfC(I,J,bi,bj).LE.Nr ) THEN
k = ksurfC(I,J,bi,bj)
pLoc = Ro_surf(I,J,bi,bj)
CALL FIND_RHO_SCALAR(
I tRef(k), sRef(k), pLoc,
O rhoLoc, myThid )
IF ( rhoLoc .EQ. 0.d0 ) THEN
Bo_surf(I,J,bi,bj) = 0.d0
ELSE
Bo_surf(I,J,bi,bj) = 1.d0/rhoLoc
ENDIF
recip_Bo(I,J,bi,bj) = rhoLoc
ELSE
Bo_surf(I,J,bi,bj) = 0.d0
recip_Bo(I,J,bi,bj) = 0.d0
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
ELSEIF ( buoyancyRelation .EQ. 'ATMOSPHERIC' ) THEN
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
IF ( Ro_surf(I,J,bi,bj).GT.0.d0
& .AND. ksurfC(I,J,bi,bj).LE.Nr ) THEN
dPIdp = (atm_Cp*atm_kappa/atm_Po)*
& (Ro_surf(I,J,bi,bj)/atm_Po)**(atm_kappa-1.d0)
Bo_surf(I,J,bi,bj) = dPIdp*tRef(ksurfC(I,J,bi,bj))
recip_Bo(I,J,bi,bj) = 1.d0 / Bo_surf(I,J,bi,bj)
ELSE
Bo_surf(I,J,bi,bj) = 0.
recip_Bo(I,J,bi,bj) = 0.
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
ELSE
STOP 'INI_LINEAR_PHISURF: We should never reach this point!'
ENDIF
CALL EXCH_XY_RL ( Bo_surf, myThid )
CALL EXCH_XY_RL ( recip_Bo, myThid )
IF ( ( buoyancyRelation .EQ. 'ATMOSPHERIC' .OR.
& buoyancyRelation .EQ. 'OCEANICP' )
& .AND. .NOT.uniformLin_PhiSurf ) THEN
CALL WRITE_FLD_XY_RL( 'Bo_surf',' ',Bo_surf,0,myThid)
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
phi0surf(I,J,bi,bj) = 0.
ENDDO
ENDDO
ENDDO
ENDDO
IF ( buoyancyRelation .EQ. 'ATMOSPHERIC'
& .AND. topoFile.NE.' ' ) THEN
STOP 'CANNOT PRESENTLY USE THIS OPTION WITH ADJOINT'
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_MASKS_ETC( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
Real*8 tmpfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi, bj
INTEGER i, j, k
Real*8 hFacCtmp
Real*8 hFacMnSz
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( dxG(i,j,bi,bj) .NE. 0. )
& recip_dxG(i,j,bi,bj) = 1.d0/dxG(i,j,bi,bj)
IF ( dyG(i,j,bi,bj) .NE. 0. )
& recip_dyG(i,j,bi,bj) = 1.d0/dyG(i,j,bi,bj)
IF ( dxC(i,j,bi,bj) .NE. 0. )
& recip_dxC(i,j,bi,bj) = 1.d0/dxC(i,j,bi,bj)
IF ( dyC(i,j,bi,bj) .NE. 0. )
& recip_dyC(i,j,bi,bj) = 1.d0/dyC(i,j,bi,bj)
IF ( dxF(i,j,bi,bj) .NE. 0. )
& recip_dxF(i,j,bi,bj) = 1.d0/dxF(i,j,bi,bj)
IF ( dyF(i,j,bi,bj) .NE. 0. )
& recip_dyF(i,j,bi,bj) = 1.d0/dyF(i,j,bi,bj)
IF ( dxV(i,j,bi,bj) .NE. 0. )
& recip_dxV(i,j,bi,bj) = 1.d0/dxV(i,j,bi,bj)
IF ( dyU(i,j,bi,bj) .NE. 0. )
& recip_dyU(i,j,bi,bj) = 1.d0/dyU(i,j,bi,bj)
IF ( rA (i,j,bi,bj) .NE. 0. )
& recip_rA (i,j,bi,bj) = 1.d0/rA (i,j,bi,bj)
IF ( rAs(i,j,bi,bj) .NE. 0. )
& recip_rAs(i,j,bi,bj) = 1.d0/rAs(i,j,bi,bj)
IF ( rAw(i,j,bi,bj) .NE. 0. )
& recip_rAw(i,j,bi,bj) = 1.d0/rAw(i,j,bi,bj)
IF ( rAz(i,j,bi,bj) .NE. 0. )
& recip_rAz(i,j,bi,bj) = 1.d0/rAz(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
IF ( selectSigmaCoord.EQ.0 ) THEN
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO k=1, Nr
hFacMnSz=max( hFacMin, min(hFacMinDr*recip_drF(k),1.d0) )
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hFacCtmp = (rF(k)-R_low(i,j,bi,bj))*recip_drF(k)
hFacCtmp=min( max( hFacCtmp, 0.d0) , 1.d0)
IF (hFacCtmp.LT.hFacMnSz) THEN
IF (hFacCtmp.LT.hFacMnSz*0.5) THEN
hFacC(i,j,k,bi,bj)=0.
ELSE
hFacC(i,j,k,bi,bj)=hFacMnSz
ENDIF
ELSE
hFacC(i,j,k,bi,bj)=hFacCtmp
ENDIF
ENDDO
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
R_low(i,j,bi,bj) = rF(1)
DO k=Nr,1,-1
R_low(i,j,bi,bj) = R_low(i,j,bi,bj)
& - drF(k)*hFacC(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO k=1, Nr
hFacMnSz=max( hFacMin, min(hFacMinDr*recip_drF(k),1.d0) )
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hFacCtmp = (rF(k)-Ro_surf(i,j,bi,bj))*recip_drF(k)
hFacCtmp = hFacC(i,j,k,bi,bj) - max( hFacCtmp, 0.d0)
hFacCtmp = max( hFacCtmp, 0.d0)
IF (hFacCtmp.LT.hFacMnSz) THEN
IF (hFacCtmp.LT.hFacMnSz*0.5) THEN
hFacC(i,j,k,bi,bj)=0.
ELSE
hFacC(i,j,k,bi,bj)=hFacMnSz
ENDIF
ELSE
hFacC(i,j,k,bi,bj)=hFacCtmp
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
tmpfld(i,j,bi,bj) = 0.
kSurfC(i,j,bi,bj) = Nr+1
Ro_surf(i,j,bi,bj) = R_low(i,j,bi,bj)
DO k=Nr,1,-1
Ro_surf(i,j,bi,bj) = Ro_surf(i,j,bi,bj)
& + drF(k)*hFacC(i,j,k,bi,bj)
IF (hFacC(i,j,k,bi,bj).NE.0.) THEN
kSurfC(i,j,bi,bj) = k
tmpfld(i,j,bi,bj) = tmpfld(i,j,bi,bj) + 1.
ENDIF
ENDDO
kLowC(i,j,bi,bj) = 0
DO k= 1, Nr
IF (hFacC(i,j,k,bi,bj).NE.0) THEN
kLowC(i,j,bi,bj) = k
ENDIF
ENDDO
maskInC(i,j,bi,bj)= 0.
IF ( kSurfC(i,j,bi,bj).LE.Nr ) maskInC(i,j,bi,bj)= 1.
ENDDO
ENDDO
ENDDO
ENDDO
CALL PLOT_FIELD_XYRS(R_low,
& 'Model R_low (ini_masks_etc)', 1, myThid)
CALL PLOT_FIELD_XYRS(Ro_surf,
& 'Model Ro_surf (ini_masks_etc)', 1, myThid)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
tmpfld(i,j,bi,bj) = Ro_surf(i,j,bi,bj) - R_low(i,j,bi,bj)
IF ( tmpfld(i,j,bi,bj) .LE. 0. ) THEN
recip_Rcol(i,j,bi,bj) = 0.
ELSE
recip_Rcol(i,j,bi,bj) = 1.d0 / tmpfld(i,j,bi,bj)
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO k=1, Nr
DO j=1-Oly,sNy+Oly
hFacW(1-OLx,j,k,bi,bj)= 0.
DO i=2-Olx,sNx+Olx
hFacW(i,j,k,bi,bj)=
& MIN(hFacC(i,j,k,bi,bj),hFacC(i-1,j,k,bi,bj))
ENDDO
ENDDO
DO i=1-Olx,sNx+Olx
hFacS(i,1-OLy,k,bi,bj)= 0.
ENDDO
DO j=2-Oly,sNy+oly
DO i=1-Olx,sNx+Olx
hFacS(i,j,k,bi,bj)=
& MIN(hFacC(i,j,k,bi,bj),hFacC(i,j-1,k,bi,bj))
ENDDO
ENDDO
ENDDO
i = 1-OlX
DO j=1-Oly,sNy+Oly
rLowW (i,j,bi,bj) = 0.
rSurfW(i,j,bi,bj) = 0.
ENDDO
j = 1-Oly
DO i=1-Olx,sNx+Olx
rLowS (i,j,bi,bj) = 0.
rSurfS(i,j,bi,bj) = 0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx
rSurfW(i,j,bi,bj) =
& MIN( Ro_surf(i-1,j,bi,bj), Ro_surf(i,j,bi,bj) )
rLowW(i,j,bi,bj) =
& MAX( R_low(i-1,j,bi,bj), R_low(i,j,bi,bj) )
ENDDO
ENDDO
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rSurfS(i,j,bi,bj) =
& MIN( Ro_surf(i,j-1,bi,bj), Ro_surf(i,j,bi,bj) )
rLowS(i,j,bi,bj) =
& MAX( R_low(i,j-1,bi,bj), R_low(i,j,bi,bj) )
ENDDO
ENDDO
ENDDO
ENDDO
CALL EXCH_UV_XYZ_RS(hFacW,hFacS,.FALSE.,myThid)
CALL EXCH_UV_XY_RS( rSurfW, rSurfS, .FALSE., myThid )
CALL EXCH_UV_XY_RS( rLowW, rLowS, .FALSE., myThid )
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO k=1, Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (dyG(i,j,bi,bj).EQ.0.) hFacW(i,j,k,bi,bj)=0.
IF (dxG(i,j,bi,bj).EQ.0.) hFacS(i,j,k,bi,bj)=0.
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
kSurfW(i,j,bi,bj) = Nr+1
kSurfS(i,j,bi,bj) = Nr+1
DO k=Nr,1,-1
IF (hFacW(i,j,k,bi,bj).NE.0.) kSurfW(i,j,bi,bj) = k
IF (hFacS(i,j,k,bi,bj).NE.0.) kSurfS(i,j,bi,bj) = k
ENDDO
maskInW(i,j,bi,bj)= 0.
IF ( kSurfW(i,j,bi,bj).LE.Nr ) maskInW(i,j,bi,bj)= 1.
maskInS(i,j,bi,bj)= 0.
IF ( kSurfS(i,j,bi,bj).LE.Nr ) maskInS(i,j,bi,bj)= 1.
ENDDO
ENDDO
ENDDO
ENDDO
ELSE
CALL INI_SIGMA_HFAC( myThid )
ENDIF
CALL BARRIER(myThid)
CALL PLOT_FIELD_XYZRS( hFacC, 'hFacC' , Nr, 1, myThid )
CALL PLOT_FIELD_XYZRS( hFacW, 'hFacW' , Nr, 1, myThid )
CALL PLOT_FIELD_XYZRS( hFacS, 'hFacS' , Nr, 1, myThid )
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (hFacC(i,j,k,bi,bj) .NE. 0. ) THEN
recip_hFacC(i,j,k,bi,bj) = 1.d0 / hFacC(i,j,k,bi,bj)
maskC(i,j,k,bi,bj) = 1.
ELSE
recip_hFacC(i,j,k,bi,bj) = 0.
maskC(i,j,k,bi,bj) = 0.
ENDIF
IF (hFacW(i,j,k,bi,bj) .NE. 0. ) THEN
recip_hFacW(i,j,k,bi,bj) = 1.d0 / hFacW(i,j,k,bi,bj)
maskW(i,j,k,bi,bj) = 1.
ELSE
recip_hFacW(i,j,k,bi,bj) = 0.
maskW(i,j,k,bi,bj) = 0.
ENDIF
IF (hFacS(i,j,k,bi,bj) .NE. 0. ) THEN
recip_hFacS(i,j,k,bi,bj) = 1.d0 / hFacS(i,j,k,bi,bj)
maskS(i,j,k,bi,bj) = 1.
ELSE
recip_hFacS(i,j,k,bi,bj) = 0.
maskS(i,j,k,bi,bj) = 0.
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_MIXING( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER i, j, k
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j = 1-Oly, sNy+Oly
DO i = 1-Olx, sNx+Olx
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_NH_FIELDS( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER maxNoChkptLev
PARAMETER ( maxNoChkptLev = 2 )
COMMON / RESTART_I /
& nCheckLev,
& tempStartAB, saltStartAB,
& mom_StartAB, nHydStartAB,
& dPhiNHstatus
INTEGER nCheckLev
INTEGER tempStartAB
INTEGER saltStartAB
INTEGER mom_StartAB
INTEGER nHydStartAB
INTEGER dPhiNHstatus
COMMON / RESTART_C /
& checkPtSuff
CHARACTER*(5) checkPtSuff(maxNoChkptLev)
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_NLFS_VARS( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_P_GROUND(selectMode,
& Hfld, Pfld,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER selectMode
Real*8 Hfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Pfld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER bi,bj,i,j,K, Ks
Real*8 Po_surf
Real*8 hRef(2*Nr+1), rHalf(2*Nr+1)
LOGICAL findPoSurf
INTEGER nLevHvR
PARAMETER ( nLevHvR = 60 )
Real*8 plowHvR, dpHvR, pLevHvR(nLevHvR+1), pMidHvR(nLevHvR)
Real*8 thetaHvR(nLevHvR), PiHvR(nLevHvR+1), dPiHvR(nLevHvR)
Real*8 recip_kappa, PiLoc, zLoc, dzLoc, yLatLoc, phiLoc
Real*8 psNorm, rMidKp1
Real*8 ratioRm(Nr), ratioRp(Nr)
INTEGER kLev
IF ( selectFindRoSurf.LT.0 .OR. selectFindRoSurf.GT.1 ) THEN
WRITE(msgBuf,'(A,I2,A)')
& 'INI_P_GROUND: selectFindRoSurf =', selectFindRoSurf,
& ' <== bad value !'
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'INI_P_GROUND'
ENDIF
DO K=1,Nr
rHalf(2*K-1) = rF(K)
rHalf(2*K) = rC(K)
ENDDO
rHalf(2*Nr+1) = rF(Nr+1)
DO K=1,2*Nr+1
hRef(K) = phiRef(K)*recip_gravity
ENDDO
IF (selectFindRoSurf.EQ.0 .AND. selectMode .GT. 0 ) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
Ks = 1
DO K=1,2*Nr
IF (Hfld(i,j,bi,bj).GE.hRef(K)) Ks = K
ENDDO
Po_surf = rHalf(Ks) + (rHalf(Ks+1)-rHalf(Ks))*
& (Hfld(i,j,bi,bj)-hRef(Ks))/(hRef(Ks+1)-hRef(Ks))
Pfld(i,j,bi,bj) = Po_surf
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
IF ( selectFindRoSurf.EQ.1 ) THEN
recip_kappa = 1.d0 / atm_kappa
plowHvR = 0.4d0
dpHvR = nLevHvR
dpHvR = (1. - plowHvR) / dpHvR
pLevHvR(1)= Ro_SeaLevel/atm_Po
PiHvR(1) = atm_Cp*(pLevHvR(1)**atm_kappa)
DO k=1,nLevHvR
pLevHvR(k+1)= pLevHvR(1) - float(k)*dpHvR
PiHvR(k+1) = atm_Cp*(pLevHvR(k+1)**atm_kappa)
pMidHvR(k)= (pLevHvR(k)+pLevHvR(k+1))*0.5d0
dPiHvR(k) = PiHvR(k) - PiHvR(k+1)
ENDDO
DO k=1,Nr
ratioRm(k) = 1.d0
ratioRp(k) = 1.d0
IF (k.GT.1 ) ratioRm(k) = 0.5d0*drC(k)/(rF(k)-rC(k))
IF (k.LT.Nr) ratioRp(k) = 0.5d0*drC(k+1)/(rC(k)-rF(k+1))
ENDDO
ENDIF
IF ( selectFindRoSurf*selectMode .GT. 0) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
IF ( Hfld(i,j,bi,bj) .LE. 0.d0) THEN
Pfld(i,j,bi,bj) = Ro_SeaLevel
ELSE
yLatLoc = yC(i,j,bi,bj)
CALL ANALYLIC_THETA( yLatLoc , pMidHvR,
& thetaHvR, nLevHvR, mythid)
zLoc = 0.
DO k=1,nLevHvR
IF (zLoc.GE.0.) THEN
dzLoc = dPiHvR(k)*thetaHvR(k)*recip_gravity
IF ( Hfld(i,j,bi,bj) .LE. zLoc+dzLoc ) THEN
PiLoc = PiHvR(k)
& - gravity*(Hfld(i,j,bi,bj)-zLoc)/thetaHvR(k)
psNorm = (PiLoc/atm_Cp)**recip_kappa
zLoc = -1.
ELSE
zLoc = zLoc + dzLoc
ENDIF
ENDIF
ENDDO
IF (zLoc.GE.0.) THEN
WRITE(msgBuf,'(2A)')
& 'INI_P_GROUND: FAIL in trying to find Pfld:',
& ' selectMode,i,j,bi,bj=',selectMode,i,j,bi,bj
CALL PRINT_ERROR( msgBuf , myThid)
WRITE(msgBuf,'(A,F7.1,2A,F6.4,A,F8.0)')
& 'INI_P_GROUND: Hfld=', Hfld(i,j,bi,bj), ' exceeds',
& ' Zloc(lowest P=', pLevHvR(1+nLevHvR),' )=',zLoc
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'ABNORMAL END: S/R INI_P_GROUND'
ELSE
Pfld(i,j,bi,bj) = psNorm*atm_Po
ENDIF
ENDIF
ENDDO
ENDDO
IF (selectMode.EQ.2 .AND. integr_GeoPot.NE.1) THEN
DO j=1,sNy
DO i=1,sNx
Po_surf = Pfld(i,j,bi,bj)
IF ( Po_surf.LT.rC(1) .AND. Po_surf.GT.rC(Nr) ) THEN
findPoSurf = .TRUE.
DO k=1,Nr
IF ( findPoSurf .AND. Po_surf.GE.rC(k) ) THEN
Po_surf = rC(k) + (Po_surf-rC(k))/ratioRm(k)
findPoSurf = .FALSE.
ENDIF
rMidKp1 = rF(k+1)
IF (k.LT.Nr) rMidKp1 = (rC(k)+rC(k+1))*0.5d0
IF ( findPoSurf .AND. Po_surf.GE.rMidKp1 ) THEN
Po_surf = rC(k) + (Po_surf-rC(k))/ratioRp(k)
findPoSurf = .FALSE.
ENDIF
ENDDO
IF ( findPoSurf )
& STOP 'S/R INI_P_GROUND: Pb with selectMode=2'
ENDIF
Pfld(i,j,bi,bj) = Po_surf
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDIF
IF (selectMode .LT. 0) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
ks = kSurfC(i,j,bi,bj)
IF (ks.LE.Nr) THEN
IF ( selectSigmaCoord.NE.0 ) THEN
DO k=2,Nr
IF ( Pfld(i,j,bi,bj).LT.rF(k) ) ks = k
ENDDO
ENDIF
IF ( Pfld(i,j,bi,bj).GE.rC(ks) ) THEN
phiLoc = hRef(2*ks)
& + (hRef(2*ks-1)-hRef(2*ks))
& *(Pfld(i,j,bi,bj)-rC(ks))/(rHalf(2*ks-1)-rHalf(2*ks))
ELSE
phiLoc = hRef(2*ks)
& + (hRef(2*ks+1)-hRef(2*ks))
& *(Pfld(i,j,bi,bj)-rC(ks))/(rHalf(2*ks+1)-rHalf(2*ks))
ENDIF
Hfld(i,j,bi,bj) = phiLoc
ELSE
Hfld(i,j,bi,bj) = 0.
ENDIF
ENDDO
ENDDO
IF (selectFindRoSurf.EQ.1) THEN
DO j=1,sNy
DO i=1,sNx
zLoc = 0.
IF ( Pfld(i,j,bi,bj) .LT. Ro_SeaLevel) THEN
Po_surf = Pfld(i,j,bi,bj)
IF (selectMode.EQ.-2 .AND. integr_GeoPot.NE.1) THEN
IF ( Po_surf.LT.rC(1) .AND. Po_surf.GT.rC(Nr) ) THEN
findPoSurf = .TRUE.
DO k=1,Nr
IF ( findPoSurf .AND. Po_surf.GE.rC(k) ) THEN
Po_surf = rC(k) + (Po_surf-rC(k))*ratioRm(k)
findPoSurf = .FALSE.
ENDIF
IF ( findPoSurf .AND. Po_surf.GE.rF(k+1) ) THEN
Po_surf = rC(k) + (Po_surf-rC(k))*ratioRp(k)
findPoSurf = .FALSE.
ENDIF
ENDDO
ENDIF
ENDIF
psNorm = Po_surf/atm_Po
kLev = 1 + INT( (pLevHvR(1)-psNorm)/dpHvR )
yLatLoc = yC(i,j,bi,bj)
CALL ANALYLIC_THETA( yLatLoc , pMidHvR,
& thetaHvR, kLev, mythid)
DO k=1,kLev-1
dzLoc = dPiHvR(k)*thetaHvR(k)*recip_gravity
zLoc = zLoc + dzLoc
ENDDO
dzLoc = ( PiHvR(kLev)-atm_Cp*(psNorm**atm_kappa) )
& * thetaHvR(kLev)*recip_gravity
zLoc = zLoc + dzLoc
ENDIF
phi0surf(i,j,bi,bj) = gravity*(zLoc - Hfld(i,j,bi,bj))
Hfld(i,j,bi,bj) = zLoc
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDIF
RETURN
END
SUBROUTINE ANALYLIC_THETA( yLat, pNlev,
O thetaLev,
I kSize,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER kSize
Real*8 yLat
Real*8 pNlev (kSize)
Real*8 thetaLev(kSize)
INTEGER myThid
INTEGER k
Real*8 yyA, yyB, yyC, yyAd, yyBd, yyCd
Real*8 cAtmp, cBtmp, ttdC
Real*8 ppN0, ppN1, ppN2, ppN3a, ppN3b, ppN4
Real*8 ttp1, ttp2, ttp3, ttp4, ttp5
Real*8 yAtmp, yBtmp, yCtmp, yDtmp
Real*8 ttp2y, ttp4y, a1tmp
Real*8 ppl, ppm, pph, ppr
DATA yyA , yyB , yyC , yyAd , yyBd , yyCd
& / 45.d0, 65.d0, 65.d0, .9d0, .9d0, 10.d0 /
DATA cAtmp , cBtmp , ttdC
& / 2.6d0, 1.5d0, 3.3d0 /
DATA ppN0 , ppN1 , ppN2 , ppN3a , ppN3b , ppN4
& / .1d0, .19d0, .3d0, .9d0, .7d0, .925d0 /
DATA ttp1 , ttp2 , ttp3 , ttp4 , ttp5
& / 350.d0, 342.d0, 307.d0, 301.d0, 257.d0 /
yAtmp = ABS(yLat) - yyA
yAtmp = yyA + MIN(0.d0,yAtmp/yyAd) + MAX(yAtmp, 0.d0)
yAtmp = COS( deg2rad*MAX(yAtmp, 0.d0) )
yBtmp = ABS(yLat) - yyB
yBtmp = yyB + yBtmp/yyBd
yBtmp = COS( deg2rad*MAX( 0.d0, MIN(yBtmp,90.d0) ) )
yCtmp = ABS(yLat) - yyC
yCtmp = MAX( 0.d0, 1.d0 - (yCtmp/yyCd)**2 )
yDtmp = ppN3a +(ppN3b - ppN3a)*yCtmp
ttp2y = ttp3 + (ttp2-ttp3)*yAtmp**cAtmp
ttp4y = ttp5 + (ttp4-ttp5)*yBtmp**cBtmp
a1tmp = (ttp1-ttp2y)*ppN1*ppN2/(ppN2-ppN1)
DO k=1,kSize
ppl = MIN(pNlev(k),ppN1)
ppm = MIN(MAX(pNlev(k),ppN1),ppN2)
pph = MAX(pNlev(k),ppN2)
ppr =( ppN0 + ABS(ppl-ppN0) - ppN1 )/(ppN2-ppN1)
thetaLev(k) =
& ( (1.d0 -ppr)*ttp1*ppN1**atm_kappa
& + ppr*ttp2y*ppN2**atm_kappa
& )*ppl**(-atm_kappa)
& + a1tmp*(1.d0 /ppm - 1.d0/ppN1)
& + (ttp4y-ttp2y)*(pph-ppN2)/(ppN4-ppN2)
& + (ttdC+yCtmp)*MAX(0.d0,pNlev(k)-yDtmp)/(1-yDtmp)
ENDDO
C
C
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_PRESSURE( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER i, j, k
INTEGER iMin, iMax, jMin, jMax, npiter
Real*8 PhiHydF (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 PhiHydC (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 oldPhi (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 count, rmspp, rmsppold
Real*8 sumTile, rmsTile
CHARACTER*(MAX_LEN_MBUF) msgBuf
iMin = 1-OLx
iMax = sNx+OLx
jMin = 1-OLy
jMax = sNy+OLy
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(a)')
& 'Start initial hydrostatic pressure computation'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid)
ENDIF
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k = 1,Nr
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
totPhiHyd(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
IF ( useDynP_inEos_Zc ) THEN
ELSE
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(A,A)')
& 'Pressure is predetermined for buoyancyRelation ',
& buoyancyRelation(1:11)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid)
ENDIF
ENDIF
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(A)') ' '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid)
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_PSURF( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER I, J
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
etaN(I,J,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
IF (pSurfInitFile .NE. ' ') THEN
CALL READ_FLD_XY_RL( pSurfInitFile, ' ', etaN, 0, myThid )
CALL EXCH_XY_RL ( etaN, myThid )
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
etaNm1(I,J,bi,bj) = etaN(I,J,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
etaHnm1(i,j,bi,bj) = etaN(i,j,bi,bj)
dEtaHdt(i,j,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_SALT( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER i, j, k, localWarnings
CHARACTER*(MAX_LEN_MBUF) msgBuf
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
salt(i,j,k,bi,bj) = sRef(k)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
IF ( hydrogSaltFile .NE. ' ' ) THEN
CALL READ_FLD_XYZ_RL( hydrogSaltFile, ' ', salt, 0, myThid )
CALL EXCH_XYZ_RL ( salt, myThid )
ENDIF
localWarnings=0
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
IF ( maskIniSalt ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (maskC(i,j,k,bi,bj).EQ.0.) salt(i,j,k,bi,bj) = 0.
ENDDO
ENDDO
ENDIF
IF ( sRef(k).NE.0. ) THEN
DO j=1,sNy
DO i=1,sNx
IF ( maskC(i,j,k,bi,bj).NE.0.
& .AND. salt(i,j,k,bi,bj).EQ.0. ) THEN
localWarnings=localWarnings+1
ENDIF
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDDO
IF ( localWarnings.NE.0 ) THEN
IF ( checkIniSalt ) THEN
WRITE(msgBuf,'(A,I10,A)')
& ' INI_SALT: found', localWarnings,
& ' wet grid-pts with salt=0 identically.'
CALL PRINT_ERROR( msgBuf , myThid)
WRITE(msgBuf,'(A,A)')
& ' If this is intentional, you need to',
& ' set checkIniSalt=.false. in "data", namelist PARM05'
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'ABNORMAL END: S/R INI_SALT'
ELSE
WRITE(msgBuf,'(A,I10,A)')
& '** WARNINGS ** INI_SALT: found', localWarnings,
& ' wet grid-pts with salt=0 identically.'
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT, myThid )
ENDIF
ENDIF
IF (debugMode) THEN
CALL PLOT_FIELD_XYZRL( salt, 'Initial Salinity',
& Nr, 1, myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_SIGMA_HFAC( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER i, j, k
Real*8 rEmpty
Real*8 rFullDepth
Real*8 tmpFld(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 min_hFac
Real*8 hFactmp
CHARACTER*(MAX_LEN_MBUF) msgBuf
IF ( usingPCoords ) rEmpty = rF(Nr+1)
IF ( usingZCoords ) rEmpty = rF(1)
rFullDepth = rF(1)-rF(Nr+1)
min_hFac = 1.
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
tmpFld(i,j) = Ro_surf(i,j,bi,bj)-R_low(i,j,bi,bj)
IF ( tmpFld(i,j).LT.hFacInf*rFullDepth )
& tmpFld(i,j) = 0.d0
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( tmpFld(i,j).GT.0.d0 ) THEN
kSurfC (i,j,bi,bj) = 1
kLowC (i,j,bi,bj) = Nr
maskInC(i,j,bi,bj) = 1.
recip_Rcol(i,j,bi,bj) = 1.d0 / tmpFld(i,j)
ELSE
kSurfC (i,j,bi,bj) = Nr+1
kLowC (i,j,bi,bj) = 0
maskInC(i,j,bi,bj) = 0.
recip_Rcol(i,j,bi,bj) = 0.d0
Ro_surf(i,j,bi,bj) = rEmpty
R_low(i,j,bi,bj) = rEmpty
ENDIF
ENDDO
ENDDO
DO k=1, Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF ( maskInC(i,j,bi,bj).NE.0.d0 ) THEN
hFactmp = ( dAHybSigF(k)*rFullDepth
& + dBHybSigF(k)*tmpFld(i,j)
& )*recip_drF(k)
hFacC(i,j,k,bi,bj) = hFactmp
min_hFac = MIN( min_hFac, hFactmp )
ELSE
hFacC(i,j,k,bi,bj) = 0.
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
WRITE(msgBuf,'(A,1PE14.6)')
& 'S/R INI_SIGMA_HFAC: minimum hFacC=', min_hFac
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
i = 1-OlX
DO j=1-Oly,sNy+Oly
rSurfW(i,j,bi,bj) = rEmpty
rLowW (i,j,bi,bj) = rEmpty
maskInW(i,j,bi,bj)= 0.
ENDDO
j = 1-Oly
DO i=1-Olx,sNx+Olx
rSurfS(i,j,bi,bj) = rEmpty
rLowS (i,j,bi,bj) = rEmpty
maskInS(i,j,bi,bj)= 0.
ENDDO
DO j=1-Oly,sNy+Oly
DO i=2-Olx,sNx+Olx
maskInW(i,j,bi,bj)= maskInC(i-1,j,bi,bj)*maskInC(i,j,bi,bj)
rSurfW(i,j,bi,bj) =
& ( Ro_surf(i-1,j,bi,bj)
& + Ro_surf( i, j,bi,bj) )*0.5d0
rLowW(i,j,bi,bj) =
& ( R_low(i-1,j,bi,bj)
& + R_low( i, j,bi,bj) )*0.5d0
IF ( maskInW(i,j,bi,bj).EQ.0. ) THEN
rSurfW(i,j,bi,bj) = rEmpty
rLowW (i,j,bi,bj) = rEmpty
ENDIF
ENDDO
ENDDO
DO j=2-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
maskInS(i,j,bi,bj)= maskInC(i,j-1,bi,bj)*maskInC(i,j,bi,bj)
rSurfS(i,j,bi,bj) =
& ( Ro_surf(i,j-1,bi,bj)
& + Ro_surf(i, j, bi,bj) )*0.5d0
rLowS(i,j,bi,bj) =
& ( R_low(i,j-1,bi,bj)
& + R_low(i, j, bi,bj) )*0.5d0
IF ( maskInS(i,j,bi,bj).EQ.0. ) THEN
rSurfS(i,j,bi,bj) = rEmpty
rLowS (i,j,bi,bj) = rEmpty
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
CALL EXCH_UV_XY_RS( rSurfW, rSurfS, .FALSE., myThid )
CALL EXCH_UV_XY_RS( rLowW, rLowS, .FALSE., myThid )
CALL EXCH_UV_XY_RS( maskInW, maskInS, .FALSE., myThid )
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (dyG(i,j,bi,bj).EQ.0.) maskInW(i,j,bi,bj) = 0.
IF (dxG(i,j,bi,bj).EQ.0.) maskInS(i,j,bi,bj) = 0.
ENDDO
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid), myByHi(myThid)
DO bi=myBxLo(myThid), myBxHi(myThid)
DO k=1, Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hFactmp =
& ( dAHybSigF(k)*rFullDepth
& + dBHybSigF(k)*( rSurfW(i,j,bi,bj)-rLowW(i,j,bi,bj) )
& )*recip_drF(k)
hFacW(i,j,k,bi,bj) = hFactmp*maskInW(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
DO k=1, Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hFactmp =
& ( dAHybSigF(k)*rFullDepth
& + dBHybSigF(k)*( rSurfS(i,j,bi,bj)-rLowS(i,j,bi,bj) )
& )*recip_drF(k)
hFacS(i,j,k,bi,bj) = hFactmp*maskInS(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
kSurfW(i,j,bi,bj) = Nr+1
kSurfS(i,j,bi,bj) = Nr+1
IF ( maskInW(i,j,bi,bj).NE.0. ) kSurfW(i,j,bi,bj) = 1
IF ( maskInS(i,j,bi,bj).NE.0. ) kSurfS(i,j,bi,bj) = 1
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_SPHERICAL_POLAR_GRID( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER iG, jG
INTEGER bi, bj
INTEGER i, j
Real*8 lat, dlat, dlon, xG0, yG0
Real*8 xGloc(1-Olx:sNx+Olx+1,1-Oly:sNy+Oly+1)
Real*8 yGloc(1-Olx:sNx+Olx+1,1-Oly:sNy+Oly+1)
INTEGER iGl,jGl
iGl(i,bi) = 1+MOD(myXGlobalLo-1+(bi-1)*sNx+i+Olx*Nx-1,Nx)
jGl(j,bj) = 1+MOD(myYGlobalLo-1+(bj-1)*sNy+j+Oly*Ny-1,Ny)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
jG = myYGlobalLo + (bj-1)*sNy
iG = myXGlobalLo + (bi-1)*sNx
cC- note: does not work for non-uniform delX or delY
xG0 = xgOrigin
DO i=1, iG-1
xG0 = xG0 + delX(i)
ENDDO
DO i=1, Olx
xG0 = xG0 - delX( 1+MOD(Olx*Nx-1+iG-i,Nx) )
ENDDO
yG0 = ygOrigin
DO j=1, jG-1
yG0 = yG0 + delY(j)
ENDDO
DO j=1, Oly
yG0 = yG0 - delY( 1+MOD(Oly*Ny-1+jG-j,Ny) )
ENDDO
DO j=1-Oly,sNy+Oly +1
xGloc(1-Olx,j) = xG0
DO i=1-Olx,sNx+Olx
xGloc(i+1,j) = xGloc(i,j) + delX( iGl(i,bi) )
ENDDO
ENDDO
DO i=1-Olx,sNx+Olx +1
yGloc(i,1-Oly) = yG0
DO j=1-Oly,sNy+Oly
yGloc(i,j+1) = yGloc(i,j) + delY( jGl(j,bj) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
xG(i,j,bi,bj) = xGloc(i,j)
yG(i,j,bi,bj) = yGloc(i,j)
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
xC(i,j,bi,bj) = 0.25d0*(
& xGloc(i,j)+xGloc(i+1,j)+xGloc(i,j+1)+xGloc(i+1,j+1) )
yC(i,j,bi,bj) = 0.25d0*(
& yGloc(i,j)+yGloc(i+1,j)+yGloc(i,j+1)+yGloc(i+1,j+1) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
lat = yC(i,j,bi,bj)
dlon = delX( iGl(i,bi) )
dlat = delY( jGl(j,bj) )
dxF(i,j,bi,bj) = rSphere*COS(deg2rad*lat)*dlon*deg2rad
dyF(i,j,bi,bj) = rSphere*dlat*deg2rad
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
lat = 0.5d0*(yGloc(i,j)+yGloc(i+1,j))
dlon = delX( iGl(i,bi) )
dlat = delY( jGl(j,bj) )
dxG(i,j,bi,bj) = rSphere*COS(deg2rad*lat)*dlon*deg2rad
if (dxG(i,j,bi,bj).LT.1.) dxG(i,j,bi,bj)=0.
dyG(i,j,bi,bj) = rSphere*dlat*deg2rad
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
dxC(i,j,bi,bj) = 0.
dyC(i,j,bi,bj) = 0.
dxV(i,j,bi,bj) = 0.
dyU(i,j,bi,bj) = 0.
rAw(i,j,bi,bj) = 0.
rAs(i,j,bi,bj) = 0.
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx ! NOTE range
dxC(i,j,bi,bj) = 0.5d0*(dxF(i,j,bi,bj)+dxF(i-1,j,bi,bj))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly ! NOTE range
DO i=1-Olx,sNx+Olx
dyC(i,j,bi,bj) = 0.5d0*(dyF(i,j,bi,bj)+dyF(i,j-1,bi,bj))
ENDDO
ENDDO
DO j=1-Oly+1,sNy+Oly ! NOTE range
DO i=1-Olx+1,sNx+Olx ! NOTE range
dxV(i,j,bi,bj) = 0.5d0*(dxG(i,j,bi,bj)+dxG(i-1,j,bi,bj))
dyU(i,j,bi,bj) = 0.5d0*(dyG(i,j,bi,bj)+dyG(i,j-1,bi,bj))
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
lat=0.5d0*(yGloc(i,j)+yGloc(i+1,j))
dlon=delX( iGl(i,bi) )
dlat=delY( jGl(j,bj) )
rA(i,j,bi,bj) = rSphere*rSphere*dlon*deg2rad
& *ABS( SIN((lat+dlat)*deg2rad)-SIN(lat*deg2rad) )
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx+1,sNx+Olx ! NOTE range
rAw(i,j,bi,bj) = 0.5d0*(rA(i,j,bi,bj)+rA(i-1,j,bi,bj))
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
lat=yC(i,j,bi,bj)
dlon=delX( iGl(i,bi) )
dlat=0.5d0*( delY( jGl(j,bj) ) + delY( jGl(j-1,bj) ) )
rAs(i,j,bi,bj) = rSphere*rSphere*dlon*deg2rad
& *ABS( SIN(lat*deg2rad)-SIN((lat-dlat)*deg2rad) )
IF (ABS(lat).GT.90..OR.ABS(lat-dlat).GT.90.) rAs(i,j,bi,bj)=0.
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
lat =0.5d0*(yGloc(i,j)+yGloc(i,j+1))
dlon=0.5d0*( delX( iGl(i,bi) ) + delX( iGl(i-1,bi) ) )
dlat=0.5d0*( delY( jGl(j,bj) ) + delY( jGl(j-1,bj) ) )
rAz(i,j,bi,bj) = rSphere*rSphere*dlon*deg2rad
& *ABS( SIN(lat*deg2rad)-SIN((lat-dlat)*deg2rad) )
IF (ABS(lat).GT.90..OR.ABS(lat-dlat).GT.90.) rAz(i,j,bi,bj)=0.
ENDDO
ENDDO
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
lat=0.5d0*(yGloc(i,j)+yGloc(i,j+1))
tanPhiAtU(i,j,bi,bj)=TAN(lat*deg2rad)
lat=0.5d0*(yGloc(i,j)+yGloc(i+1,j))
tanPhiAtV(i,j,bi,bj)=TAN(lat*deg2rad)
angleCosC(i,j,bi,bj) = 1.
angleSinC(i,j,bi,bj) = 0.
ENDDO
ENDDO
DO j=1-OLy,sNy+OLy
jG = myYGlobalLo + (bj-1)*sNy + j-1
jG = MIN(MAX(1,jG),Ny)
IF (cosPower.NE.0.) THEN
cosFacU(j,bi,bj)=COS(yC(1,j,bi,bj)*deg2rad)
& **cosPower
cosFacV(j,bi,bj)=COS((yC(1,j,bi,bj)-0.5*delY(jG))*deg2rad)
& **cosPower
cosFacU(j,bi,bj)=ABS(cosFacU(j,bi,bj))
cosFacV(j,bi,bj)=ABS(cosFacV(j,bi,bj))
sqcosFacU(j,bi,bj)=SQRT(cosFacU(j,bi,bj))
sqcosFacV(j,bi,bj)=SQRT(cosFacV(j,bi,bj))
ELSE
cosFacU(j,bi,bj)=1.
cosFacV(j,bi,bj)=1.
sqcosFacU(j,bi,bj)=1.
sqcosFacV(j,bi,bj)=1.
ENDIF
ENDDO
ENDDO ! bi
ENDDO ! bj
IF ( rotateGrid ) THEN
CALL ROTATE_SPHERICAL_POLAR_GRID( xC, yC, myThid )
CALL ROTATE_SPHERICAL_POLAR_GRID( xG, yG, myThid )
CALL CALC_ANGLES( myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_THETA( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER i, j, k, localWarnings
Real*8 Tfreezing
CHARACTER*(MAX_LEN_MBUF) msgBuf
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
theta(i,j,k,bi,bj) = tRef(k)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
IF ( hydrogThetaFile .NE. ' ' ) THEN
CALL READ_FLD_XYZ_RL( hydrogThetaFile, ' ', theta, 0, myThid )
CALL EXCH_XYZ_RL ( theta, myThid )
ENDIF
localWarnings=0
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
IF ( maskIniTemp ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (maskC(i,j,k,bi,bj).EQ.0.) theta(i,j,k,bi,bj) = 0.
ENDDO
ENDDO
ENDIF
IF ( tRef(k).NE.0. ) THEN
DO j=1,sNy
DO i=1,sNx
IF ( maskC(i,j,k,bi,bj).NE.0.
& .AND. theta(i,j,k,bi,bj).EQ.0. ) THEN
localWarnings=localWarnings+1
ENDIF
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
ENDDO
IF (localWarnings.NE.0) THEN
IF ( checkIniTemp ) THEN
WRITE(msgBuf,'(A,I10,A)')
& ' INI_THETA: found', localWarnings,
& ' wet grid-pts with theta=0 identically.'
CALL PRINT_ERROR( msgBuf , myThid)
WRITE(msgBuf,'(A,A)')
& ' If this is intentional, you need to',
& ' set checkIniTemp=.false. in "data", namelist PARM05'
CALL PRINT_ERROR( msgBuf , myThid)
STOP 'ABNORMAL END: S/R INI_THETA'
ELSE
WRITE(msgBuf,'(A,I10,A)')
& '** WARNINGS ** INI_THETA: found', localWarnings,
& ' wet grid-pts with theta=0 identically.'
CALL PRINT_MESSAGE( msgBuf, errorMessageUnit,
& SQUEEZE_RIGHT, myThid )
ENDIF
ENDIF
Tfreezing=-1.9d0
IF ( allowFreezing ) THEN
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
IF (theta(i,j,k,bi,bj) .LT. Tfreezing) THEN
theta(i,j,k,bi,bj) = Tfreezing
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
IF (debugMode) THEN
CALL PLOT_FIELD_XYZRL( theta, 'Initial Temperature',
& Nr, 1, myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_DYNVARS( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi, bj
INTEGER I, J, K
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO K=1,Nr
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
uVel(I,J,K,bi,bj)=0.d0
vVel(I,J,K,bi,bj)=0.d0
wVel(I,J,K,bi,bj)=0.d0
theta(I,J,K,bi,bj)=0.d0
salt(I,J,K,bi,bj)=0.d0
gU(I,J,K,bi,bj)=0.d0
gV(I,J,K,bi,bj)=0.d0
gT(I,J,K,bi,bj)=0.d0
gS(I,J,K,bi,bj)=0.d0
guNm1(I,J,K,bi,bj) =0.d0
gvNm1(I,J,K,bi,bj) =0.d0
gtNm1(I,J,K,bi,bj) =0.d0
gsNm1(I,J,K,bi,bj) =0.d0
totPhiHyd(I,J,K,bi,bj)=0.d0
rhoInSitu(I,J,K,bi,bj)=0.d0
IVDConvCount(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
DO J=1-Oly,sNy+Oly
DO I=1-Olx,sNx+Olx
etaN(I,J,bi,bj)=0.d0
etaH(I,J,bi,bj)=0.d0
phiHydLow(I,J,bi,bj)=0.d0
hMixLayer(I,J,bi,bj)=0.d0
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_VEL( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER bi,bj,i,j,k
C
C
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
uVel(i,j,k,bi,bj)=0.d0
vVel(i,j,k,bi,bj)=0.d0
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
IF (uVelInitFile .NE. ' ' .OR. vVelInitFile .NE. ' ') THEN
IF (uVelInitFile .NE. ' ')
& CALL READ_FLD_XYZ_RL( uVelInitFile, ' ', uVel, 0, myThid )
IF (vVelInitFile .NE. ' ')
& CALL READ_FLD_XYZ_RL( vVelInitFile, ' ', vVel, 0, myThid )
CALL EXCH_UV_XYZ_RL(uVel,vVel,.TRUE.,myThid)
ENDIF
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO k=1,Nr
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
uVel(i,j,k,bi,bj)=uVel(i,j,k,bi,bj)*maskW(i,j,k,bi,bj)
vVel(i,j,k,bi,bj)=vVel(i,j,k,bi,bj)*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INI_VERTICAL_GRID( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER k
Real*8 tmpRatio, checkRatio1, checkRatio2
CHARACTER*(MAX_LEN_MBUF) msgBuf
Real*8 maxErrC, maxErrF, epsil, tmpError
Real*8 rFullDepth, recip_fullDepth
Real*8 rSigBndRS, tmpRS
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(A,2(A,L5))') 'Enter INI_VERTICAL_GRID:',
& ' setInterFDr=', setInterFDr,
& ' ; setCenterDr=', setCenterDr
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
rkSign = -1.d0
gravitySign = -1.d0
IF ( usingPCoords ) THEN
gravitySign = 1.d0
ENDIF
IF ( .NOT.(setInterFDr.OR.setCenterDr) ) THEN
WRITE(msgBuf,'(A)')
& 'S/R INI_VERTICAL_GRID: neither delR nor delRc are defined'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A)')
& 'S/R INI_VERTICAL_GRID: Need at least 1 of the 2 (delR,delRc)'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID'
ENDIF
IF (setInterFDr) THEN
DO k=1,Nr
drF(k) = delR(k)
ENDDO
DO k=1,Nr
IF (delR(k).LE.0.) THEN
WRITE(msgBuf,'(A,I4,A,E16.8)')
& 'S/R INI_VERTICAL_GRID: delR(k=',k,' )=',delR(k)
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A)')
& 'S/R INI_VERTICAL_GRID: Vert. grid spacing MUST BE > 0'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID'
ENDIF
ENDDO
ELSE
drF(1) = delRc(1)
DO k=2,Nr
drF(k-1) = 0.5d0 *delRc(k) + drF(k-1)
drF( k ) = 0.5d0 *delRc(k)
ENDDO
drF(Nr) = delRc(Nr+1) + drF(Nr)
ENDIF
IF (setCenterDr) THEN
DO k=1,Nr
drC(k) = delRc(k)
ENDDO
DO k=1,Nr+1
IF (delRc(k).LE.0.) THEN
WRITE(msgBuf,'(A,I4,A,E16.8)')
& 'S/R INI_VERTICAL_GRID: delRc(k=',k,' )=',delRc(k)
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A)')
& 'S/R INI_VERTICAL_GRID: Vert. grid spacing MUST BE > 0'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID'
ENDIF
ENDDO
ELSE
drC(1) = 0.5d0 *delR(1)
DO k=2,Nr
drC(k) = 0.5d0 *(delR(k-1)+delR(k))
ENDDO
ENDIF
rF(1) = Ro_SeaLevel
DO k=1,Nr
rF(k+1) = rF(k) + rkSign*drF(k)
ENDDO
rC(1) = rF(1) + rkSign*drC(1)
DO k=2,Nr
rC(k) = rC(k-1) + rkSign*drC(k)
ENDDO
checkRatio2 = 100.
checkRatio1 = 1.d0 / checkRatio2
DO k=1,Nr
tmpRatio = 0.
IF ( (rC(k)-rF(k+1)) .NE. 0. )
& tmpRatio = (rF(k)-rC(k)) / (rC(k)-rF(k+1))
IF ( tmpRatio.LT.checkRatio1 .OR. tmpRatio.GT.checkRatio2 ) THEN
WRITE(msgBuf,'(A,I4,A,E16.8)')
& 'S/R INI_VERTICAL_GRID: Invalid relative position, level k=',
& k, ' :', tmpRatio
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A,1PE14.6,A,2E14.6)')
& 'S/R INI_VERTICAL_GRID: rC=', rC(k),
& ' , rF(k,k+1)=',rF(k),rF(k+1)
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID'
ENDIF
ENDDO
DO k=1,Nr
recip_drC(k) = 1.d0/drC(k)
recip_drF(k) = 1.d0/drF(k)
ENDDO
IF ( selectSigmaCoord .EQ. 0 ) THEN
DO k=1,Nr+1
aHybSigmF(k) = 0.d0
bHybSigmF(k) = 0.d0
dAHybSigC(k) = 0.d0
dAHybSigC(k) = 0.d0
ENDDO
DO k=1,Nr
aHybSigmC(k) = 0.d0
bHybSigmC(k) = 0.d0
dAHybSigF(k) = 0.d0
dAHybSigF(k) = 0.d0
ENDDO
ELSE
rFullDepth = rF(1) - rF(Nr+1)
recip_fullDepth = 0.d0
IF ( rFullDepth.GT.0. ) recip_fullDepth = 1.d0 / rFullDepth
rSigBndRS = rSigmaBnd
IF ( hybSigmFile.EQ.' ' .AND. rSigmaBnd.EQ.UNSET_RL ) THEN
IF ( usingPCoords ) rSigBndRS = rF(Nr+1)
IF ( usingZCoords ) rSigBndRS = rF(1)
ENDIF
IF ( hybSigmFile.EQ.' ' ) THEN
IF ( usingPCoords .AND. setInterFDr ) THEN
DO k=1,Nr+1
tmpRS = MIN( rF(k), rSigBndRS )
bHybSigmF(k) = ( rF(k) - tmpRS )/(rF(1)-rSigBndRS)
aHybSigmF(k) = (1.d0 - bHybSigmF(k))
& *( tmpRS -rF(Nr+1) )*recip_fullDepth
ENDDO
ENDIF
IF ( usingPCoords .AND. setCenterDr ) THEN
DO k=1,Nr
tmpRS = MIN( rC(k), rSigBndRS )
bHybSigmC(k) = ( rC(k) - tmpRS )/(rF(1)-rSigBndRS)
aHybSigmC(k) = (1.d0 - bHybSigmC(k))
& *( tmpRS -rF(Nr+1) )*recip_fullDepth
ENDDO
ENDIF
IF ( usingZCoords .AND. setInterFDr ) THEN
DO k=1,Nr+1
tmpRS = MAX( rF(k), rSigBndRS )
bHybSigmF(k) = ( rF(k)-rF(Nr+1) )/( tmpRS-rF(Nr+1) )
aHybSigmF(k) = bHybSigmF(k)*( tmpRS-rF(1) )*recip_fullDepth
ENDDO
ENDIF
IF ( usingZCoords .AND. setCenterDr ) THEN
DO k=1,Nr
tmpRS = MAX( rC(k), rSigBndRS )
bHybSigmC(k) = ( rC(k)-rF(Nr+1) )/( tmpRS-rF(Nr+1) )
aHybSigmC(k) = bHybSigmC(k)*( tmpRS-rF(1) )*recip_fullDepth
ENDDO
ENDIF
ELSE
IF (setCenterDr) THEN
STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID: Missing Code'
ENDIF
ENDIF
IF ( .NOT.setInterFDr ) THEN
bHybSigmF(1) = 1.d0
aHybSigmF(1) = 0.d0
bHybSigmF(Nr+1) = 0.d0
aHybSigmF(Nr+1) = 0.d0
DO k=2,Nr
bHybSigmF(k) = ( bHybSigmC(k) + bHybSigmC(k-1) )*0.5d0
aHybSigmF(k) = ( aHybSigmC(k) + aHybSigmC(k-1) )*0.5d0
ENDDO
ENDIF
IF ( .NOT.setCenterDr ) THEN
DO k=1,Nr
bHybSigmC(k) = ( bHybSigmF(k) + bHybSigmF(k+1) )*0.5d0
aHybSigmC(k) = ( aHybSigmF(k) + aHybSigmF(k+1) )*0.5d0
ENDDO
ENDIF
DO k=1,Nr
dAHybSigF(k) = ( aHybSigmF(k+1) - aHybSigmF(k) )*rkSign
dBHybSigF(k) = ( bHybSigmF(k+1) - bHybSigmF(k) )*rkSign
ENDDO
DO k=2,Nr
dAHybSigC(k) = ( aHybSigmC(k) - aHybSigmC(k-1) )*rkSign
dBHybSigC(k) = ( bHybSigmC(k) - bHybSigmC(k-1) )*rkSign
ENDDO
dAHybSigC(1) = ( aHybSigmC(1) - aHybSigmF(1) )*rkSign
dBHybSigC(1) = ( bHybSigmC(1) - bHybSigmF(1) )*rkSign
dAHybSigC(Nr+1) = ( aHybSigmF(Nr+1) - aHybSigmC(Nr) )*rkSign
dBHybSigC(Nr+1) = ( bHybSigmF(Nr+1) - bHybSigmC(Nr) )*rkSign
maxErrC = 0.
maxErrF = 0.
epsil = 1.D-9
DO k=1,Nr
tmpError = ( rC(k)-rF(Nr+1) )*recip_fullDepth
& - ( aHybSigmC(k)+bHybSigmC(k) )
IF ( ABS(tmpError).GT.epsil ) THEN
IF ( maxErrC.LE.epsil ) THEN
WRITE(msgBuf,'(2A)') 'S/R INI_VERTICAL_GRID:',
& ' rC and Hybrid-Sigma Coeff miss-match'
CALL PRINT_ERROR( msgBuf, myThid )
ENDIF
WRITE(msgBuf,'(A,I4,2(A,1PE14.6),A,1P2E14.6)')
& ' k=', k,' , err=', tmpError, ' ; rC=', rC(k),
& ' , a & b=', aHybSigmC(k), bHybSigmC(k)
CALL PRINT_ERROR( msgBuf, myThid )
ENDIF
maxErrC = MAX( maxErrC, ABS(tmpError) )
ENDDO
DO k=1,Nr+1
tmpError = ( rF(k)-rF(Nr+1) )*recip_fullDepth
& - ( aHybSigmF(k)+bHybSigmF(k) )
IF ( ABS(tmpError).GT.epsil ) THEN
IF ( maxErrF.LE.epsil ) THEN
WRITE(msgBuf,'(2A)') 'S/R INI_VERTICAL_GRID:',
& ' rF and Hybrid-Sigma Coeff miss-match'
CALL PRINT_ERROR( msgBuf, myThid )
ENDIF
WRITE(msgBuf,'(A,I4,2(A,1PE14.6),A,1P2E14.6)')
& ' k=', k,' , err=', tmpError, ' ; rF=', rF(k),
& ' , a & b=', aHybSigmF(k), bHybSigmF(k)
CALL PRINT_ERROR( msgBuf, myThid )
ENDIF
maxErrF = MAX( maxErrF, ABS(tmpError) )
ENDDO
WRITE(msgBuf,'(2A,1PE14.6)') 'S/R INI_VERTICAL_GRID:',
& ' matching of aHybSigmC & rC :', maxErrC
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(2A,1PE14.6)') 'S/R INI_VERTICAL_GRID:',
& ' matching of aHybSigmF & rF :', maxErrF
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT, myThid )
IF ( maxErrC.GT.epsil .OR. maxErrF.GT.epsil ) THEN
WRITE(msgBuf,'(2A)') 'S/R INI_VERTICAL_GRID:',
& ' rC,rF and Hybrid-Sigma Coeff miss-match'
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R INI_VERTICAL_GRID'
ENDIF
ENDIF
ENDIF
CALL BARRIER(myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INITIALISE_VARIA( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
INTEGER bi,bj
IF (debugMode) CALL DEBUG_ENTER('INITIALISE_VARIA',myThid)
nIter0 = NINT( (startTime-baseTime)/deltaTClock )
CALL INI_HFAC( myThid )
CALL INI_DEPTHS( myThid )
CALL INI_MASKS_ETC( myThid )
IF (debugMode) CALL DEBUG_CALL('INI_LINEAR_PHISURF',myThid)
CALL INI_LINEAR_PHISURF( myThid )
IF (debugMode) CALL DEBUG_CALL('INI_CG2D',myThid)
CALL INI_CG2D( myThid )
IF (debugMode) CALL DEBUG_CALL('INI_DYNVARS',myThid)
CALL INI_DYNVARS( myThid )
IF (debugMode) CALL DEBUG_CALL('INI_FIELDS',myThid)
CALL INI_FIELDS( myThid )
IF (debugMode) CALL DEBUG_CALL('INI_MIXING',myThid)
CALL INI_MIXING( myThid )
IF (debugMode) CALL DEBUG_CALL('INI_FORCING',myThid)
CALL INI_FORCING( myThid )
CALL INI_AUTODIFF( myThid )
IF (debugMode) CALL DEBUG_CALL('PACKAGES_INIT_VARIABLES',myThid)
CALL PACKAGES_INIT_VARIABLES( myThid )
IF ( startTime .EQ. baseTime .AND. cAdjFreq .NE. 0. ) THEN
IF (debugMode) CALL DEBUG_CALL('CONVECTIVE_ADJUSTMENT_INI',myThid)
CADJ loop = parallel
DO bj = myByLo(myThid), myByHi(myThid)
CADJ loop = parallel
DO bi = myBxLo(myThid), myBxHi(myThid)
CALL CONVECTIVE_ADJUSTMENT_INI(
I bi, bj, startTime, nIter0, myThid )
ENDDO
ENDDO
ENDIF
IF (debugMode) CALL DEBUG_CALL('INTEGR_CONTINUITY',myThid)
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
CALL INTEGR_CONTINUITY( bi, bj, uVel, vVel,
I startTime, nIter0, myThid )
ENDDO
ENDDO
IF ( exactConserv ) THEN
IF (debugMode) CALL DEBUG_CALL('UPDATE_ETAH',myThid)
CALL UPDATE_ETAH( startTime, nIter0, myThid )
ENDIF
CALL EXCH_XYZ_RL ( wVel, myThid )
IF (debugMode) CALL DEBUG_CALL('STATE_SUMMARY',myThid)
CALL STATE_SUMMARY( myThid )
IF (debugMode) CALL DEBUG_CALL('MONITOR',myThid)
CALL MONITOR( startTime, nIter0, myThid )
IF (debugMode) CALL DEBUG_CALL('DO_STATEVARS_TAVE',myThid)
CALL DO_STATEVARS_TAVE( startTime, nIter0, myThid )
IF (debugMode) CALL DEBUG_CALL('DO_THE_MODEL_IO',myThid)
CALL DO_THE_MODEL_IO( .FALSE., startTime, nIter0, myThid )
IF (debugMode) CALL DEBUG_LEAVE('INITIALISE_VARIA',myThid)
CALL BAR_CHECK( 4, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INTEGRATE_FOR_W(
I bi, bj, k, uFld, vFld, mFld,
O wFld,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER bi,bj,k
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 mFld (1)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER i,j
Real*8 uTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 conv2d(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
DO j=1,sNy+1
DO i=1,sNx+1
uTrans(i,j) = uFld(i,j,k,bi,bj)
& *dyG(i,j,bi,bj)*deepFacC(k)*rhoFacC(k)
& *drF(k)*hFacW(i,j,k,bi,bj)
vTrans(i,j) = vFld(i,j,k,bi,bj)
& *dxG(i,j,bi,bj)*deepFacC(k)*rhoFacC(k)
& *drF(k)*hFacS(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=1,sNy
DO i=1,sNx
conv2d(i,j) = -( uTrans(i+1,j)-uTrans(i,j)
& +vTrans(i,j+1)-vTrans(i,j) )
ENDDO
ENDDO
IF (rigidLid) THEN
IF (k.EQ.1) THEN
DO j=1,sNy
DO i=1,sNx
wFld(i,j,k,bi,bj) = 0.
ENDDO
ENDDO
ELSEIF (k.EQ.Nr) THEN
DO j=1,sNy
DO i=1,sNx
wFld(i,j,k,bi,bj) =
& conv2d(i,j)*recip_rA(i,j,bi,bj)
& *maskC(i,j,k,bi,bj)*maskC(i,j,k-1,bi,bj)
& *recip_deepFac2F(k)*recip_rhoFacF(k)
ENDDO
ENDDO
ELSE
DO j=1,sNy
DO i=1,sNx
wFld(i,j,k,bi,bj) =
& ( wFld(i,j,k+1,bi,bj)*deepFac2F(k+1)*rhoFacF(k+1)
& +conv2d(i,j)*recip_rA(i,j,bi,bj)
& )*maskC(i,j,k,bi,bj)*maskC(i,j,k-1,bi,bj)
& *recip_deepFac2F(k)*recip_rhoFacF(k)
ENDDO
ENDDO
ENDIF
ELSE
IF (k.EQ.Nr) THEN
DO j=1,sNy
DO i=1,sNx
wFld(i,j,k,bi,bj) =
& conv2d(i,j)*recip_rA(i,j,bi,bj)
& *maskC(i,j,k,bi,bj)
& *recip_deepFac2F(k)*recip_rhoFacF(k)
ENDDO
ENDDO
ELSE
DO j=1,sNy
DO i=1,sNx
wFld(i,j,k,bi,bj) =
& ( wFld(i,j,k+1,bi,bj)*deepFac2F(k+1)*rhoFacF(k+1)
& +conv2d(i,j)*recip_rA(i,j,bi,bj)
& )*maskC(i,j,k,bi,bj)
& *recip_deepFac2F(k)*recip_rhoFacF(k)
ENDDO
ENDDO
ENDIF
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE INTEGR_CONTINUITY(
I bi, bj, uFld, vFld,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER bi,bj
Real*8 uFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
Real*8 vFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER k
INTEGER i,j, ks
Real*8 uTrans(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 vTrans(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 hDivFlow(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 facEmP, facMass
Real*8 addMass(1)
IF (exactConserv) THEN
facEmP = 0.
IF ( fluidIsWater.AND.useRealFreshWaterFlux ) facEmP=mass2rUnit
facMass = 0.
IF ( selectAddFluid.GE.1 ) facMass = mass2rUnit
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
hDivFlow(i,j) = 0.d0
utrans(i,j) = 0.d0
vtrans(i,j) = 0.d0
ENDDO
ENDDO
DO k=1,Nr
DO j=1,sNy+1
DO i=1,sNx+1
uTrans(i,j) = uFld(i,j,k,bi,bj)*dyG(i,j,bi,bj)
& *deepFacC(k)*rhoFacC(k)
& *drF(k)*hFacW(i,j,k,bi,bj)
vTrans(i,j) = vFld(i,j,k,bi,bj)*dxG(i,j,bi,bj)
& *deepFacC(k)*rhoFacC(k)
& *drF(k)*hFacS(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=1,sNy
DO i=1,sNx
hDivFlow(i,j) = hDivFlow(i,j)
& +maskC(i,j,k,bi,bj)*( uTrans(i+1,j)-uTrans(i,j)
& +vTrans(i,j+1)-vTrans(i,j) )
ENDDO
ENDDO
ENDDO
IF ( myTime.EQ.startTime .AND. myTime.NE.baseTime
& .AND. fluidIsWater .AND. useRealFreshWaterFlux ) THEN
IF ( usePickupBeforeC54 ) THEN
DO j=1,sNy
DO i=1,sNx
dEtaHdt(i,j,bi,bj) = (etaN(i,j,bi,bj)-etaH(i,j,bi,bj))
& / (implicDiv2Dflow*deltaTfreesurf)
ENDDO
ENDDO
ENDIF
DO j=1,sNy
DO i=1,sNx
PmEpR(i,j,bi,bj) = dEtaHdt(i,j,bi,bj)
& + hDivFlow(i,j)*recip_rA(i,j,bi,bj)
& *recip_deepFac2F(1)
PmEpR(i,j,bi,bj) = PmEpR(i,j,bi,bj)*rUnit2mass
ENDDO
ENDDO
ELSEIF ( myTime.EQ.startTime ) THEN
DO j=1,sNy
DO i=1,sNx
ks = ksurfC(I,J,bi,bj)
PmEpR(i,j,bi,bj) = 0.d0
dEtaHdt(i,j,bi,bj) = -hDivFlow(i,j)*recip_rA(i,j,bi,bj)
& *recip_deepFac2F(ks)
ENDDO
ENDDO
ELSE
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
PmEpR(i,j,bi,bj) = -EmPmR(i,j,bi,bj)
ENDDO
ENDDO
DO j=1,sNy
DO i=1,sNx
ks = ksurfC(i,j,bi,bj)
dEtaHdt(i,j,bi,bj) = -hDivFlow(i,j)*recip_rA(i,j,bi,bj)
& *recip_deepFac2F(ks)
& -facEmP*EmPmR(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
ENDIF
IF (exactConserv .AND. myTime.NE.startTime) THEN
IF (implicDiv2Dflow.EQ. 0.d0) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
etaN(i,j,bi,bj) = etaH(i,j,bi,bj)
ENDDO
ENDDO
ELSE
DO j=1,sNy
DO i=1,sNx
etaN(i,j,bi,bj) = etaH(i,j,bi,bj)
& + implicDiv2Dflow*dEtaHdt(i,j,bi,bj)*deltaTfreesurf
ENDDO
ENDDO
ENDIF
ENDIF
DO k=Nr,1,-1
CALL INTEGRATE_FOR_W(
I bi, bj, k, uFld, vFld, addMass,
O wVel,
I myThid )
IF ( k.EQ.Nr .AND. myTime.NE.baseTime .AND. usingPCoords
& .AND. fluidIsWater .AND. useRealFreshWaterFlux ) THEN
DO j=1,sNy
DO i=1,sNx
wVel(i,j,k,bi,bj) = wVel(i,j,k,bi,bj)
& +mass2rUnit*PmEpR(i,j,bi,bj)*maskC(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE LOAD_FIELDS_DRIVER( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
Real*8 myTime
INTEGER myIter
INTEGER myThid
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_ENTER( 'LOAD_FIELDS_DRIVER', myThid )
IF ( .NOT.(useEXF.OR.useEBM) ) THEN
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('EXTERNAL_FIELDS_LOAD',myThid)
CALL TIMER_START('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
CALL EXTERNAL_FIELDS_LOAD( myTime, myIter, myThid )
CALL TIMER_STOP ('EXTERNAL_FLDS_LOAD [LOAD_FLDS_DRIVER]',myThid)
ENDIF
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE( 'LOAD_FIELDS_DRIVER', myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE LOAD_GRID_SPACING( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
REAL*4 tmp4delX(Nx), tmp4delY(Ny), tmp4delR(Nr), tmp4delRc(Nr+1)
REAL*8 tmp8delX(Nx), tmp8delY(Ny), tmp8delR(Nr), tmp8delRc(Nr+1)
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER i, j, k, iLen, iUnit, rcLen1
INTEGER ILNBLNK
EXTERNAL ILNBLNK
IF ( myThid .EQ. 1 ) THEN
rcLen1 = 4
IF (readBinaryPrec.EQ.precFloat64) rcLen1 = 4*2
IF ( delXFile .NE. ' ' ) THEN
CALL MDSFINDUNIT( iUnit, myThid )
iLen = ILNBLNK(delXFile)
IF (readBinaryPrec.EQ.precFloat32) THEN
OPEN(iUnit, FILE=delXFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nx)
READ(iUnit,rec=1) tmp4delX
CLOSE(iUnit)
DO i=1,Nx
delX(i) = tmp4delX(i)
ENDDO
ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
OPEN(iUnit, FILE=delXFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nx)
READ(iUnit,rec=1) tmp8delX
CLOSE(iUnit)
DO i=1,Nx
delX(i) = tmp8delX(i)
ENDDO
ENDIF
WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
& ' delX loaded from file: ', delXFile(1:iLen)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
ENDIF
IF ( delYFile .NE. ' ' ) THEN
CALL MDSFINDUNIT( iUnit, myThid )
iLen = ILNBLNK(delYFile)
IF (readBinaryPrec.EQ.precFloat32) THEN
OPEN(iUnit, FILE=delYFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Ny)
READ(iUnit,rec=1) tmp4delY
CLOSE(iUnit)
DO j=1,Ny
delY(j) = tmp4delY(j)
ENDDO
ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
OPEN(iUnit, FILE=delYFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Ny)
READ(iUnit,rec=1) tmp8delY
CLOSE(iUnit)
DO j=1,Ny
delY(j) = tmp8delY(j)
ENDDO
ENDIF
WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
& ' delY loaded from file: ', delYFile(1:iLen)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
ENDIF
IF ( delRFile .NE. ' ' ) THEN
CALL MDSFINDUNIT( iUnit, myThid )
iLen = ILNBLNK(delRFile)
IF (readBinaryPrec.EQ.precFloat32) THEN
OPEN(iUnit, FILE=delRFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nr)
READ(iUnit,rec=1) tmp4delR
CLOSE(iUnit)
DO k=1,Nr
delR(k) = tmp4delR(k)
ENDDO
ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
OPEN(iUnit, FILE=delRFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*Nr)
READ(iUnit,rec=1) tmp8delR
CLOSE(iUnit)
DO k=1,Nr
delR(k) = tmp8delR(k)
ENDDO
ENDIF
WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
& ' delR loaded from file: ', delRFile(1:iLen)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
ENDIF
IF ( delRcFile .NE. ' ' ) THEN
CALL MDSFINDUNIT( iUnit, myThid )
iLen = ILNBLNK(delRcFile)
IF (readBinaryPrec.EQ.precFloat32) THEN
OPEN(iUnit, FILE=delRcFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
READ(iUnit,rec=1) tmp4delRc
CLOSE(iUnit)
DO k=1,Nr+1
delRc(k) = tmp4delRc(k)
ENDDO
ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
OPEN(iUnit, FILE=delRcFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
READ(iUnit,rec=1) tmp8delRc
CLOSE(iUnit)
DO k=1,Nr+1
delRc(k) = tmp8delRc(k)
ENDDO
ENDIF
WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
& ' delRc loaded from file: ', delRcFile(1:iLen)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
ENDIF
IF ( hybSigmFile .NE. ' ' ) THEN
CALL MDSFINDUNIT( iUnit, myThid )
iLen = ILNBLNK(hybSigmFile)
IF (readBinaryPrec.EQ.precFloat32) THEN
OPEN(iUnit, FILE=hybSigmFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
READ(iUnit,rec=1) tmp4delRc
DO k=1,Nr+1
aHybSigmF(k) = tmp4delRc(k)
ENDDO
READ(iUnit,rec=2) tmp4delRc
CLOSE(iUnit)
DO k=1,Nr+1
bHybSigmF(k) = tmp4delRc(k)
ENDDO
ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
OPEN(iUnit, FILE=hybSigmFile(1:iLen), STATUS='OLD',
& FORM='UNFORMATTED',ACCESS='DIRECT',RECL=rcLen1*(Nr+1))
READ(iUnit,rec=1) tmp8delRc
DO k=1,Nr+1
aHybSigmF(k) = tmp8delRc(k)
ENDDO
READ(iUnit,rec=2) tmp8delRc
CLOSE(iUnit)
DO k=1,Nr+1
bHybSigmF(k) = tmp8delRc(k)
ENDDO
ENDIF
WRITE(msgBuf,'(3A)') 'S/R LOAD_GRID_SPACING:',
& ' a&b_HybSigmF loaded from file: ', hybSigmFile(1:iLen)
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
ENDIF
ENDIF
CALL BARRIER(myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE MOMENTUM_CORRECTION_STEP(myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER iMin,iMax
INTEGER jMin,jMax
INTEGER bi,bj
INTEGER k,i,j
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
phiSurfX(i,j)=0.
phiSurfY(i,j)=0.
ENDDO
ENDDO
iMin = 1-OLx+1
iMax = sNx+OLx
jMin = 1-OLy+1
jMax = sNy+OLy
CALL CALC_GRAD_PHI_SURF(
I bi,bj,iMin,iMax,jMin,jMax,
I etaN,
O phiSurfX,phiSurfY,
I myThid )
DO K=1,Nr
IF (momStepping)
& CALL CORRECTION_STEP(
I bi,bj,iMin,iMax,jMin,jMax,K,
I phiSurfX,phiSurfY,myTime,myThid )
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
idynkey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
CALL INTEGR_CONTINUITY( bi, bj, uVel, vVel,
I myTime, myIter, myThid )
ENDDO
ENDDO
IF ( exactConserv .AND. implicDiv2Dflow .NE. 0.d0)
& CALL EXCH_XY_RL ( etaN , myThid )
IF ( implicitIntGravWave )
& CALL EXCH_XYZ_RL ( wVel , myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE PACKAGES_INIT_VARIABLES( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
INTEGER myThid
IF (debugMode)
& CALL DEBUG_ENTER('PACKAGES_INIT_VARIABLES',myThid)
IF ( useGAD ) THEN
IF (debugMode) CALL DEBUG_CALL('GAD_INIT_VARIA',myThid)
CALL GAD_INIT_VARIA( myThid )
ENDIF
IF (useCDscheme) THEN
IF (debugMode) CALL DEBUG_CALL('CD_CODE_INI_VARS',myThid)
CALL CD_CODE_INI_VARS( myThid )
ENDIF
IF (useGMRedi) THEN
IF (debugMode) CALL DEBUG_CALL('GMREDI_INIT',myThid)
CALL GMREDI_INIT( myThid )
ENDIF
CADJ STORE theta = tapelev_init, key = 1
IF (debugMode) CALL DEBUG_CALL('CTRL_INIT_VARIABLES',myThid)
CALL CTRL_INIT_VARIABLES ( myThid )
IF (debugMode) CALL DEBUG_CALL('CTRL_MAP_INI',myThid)
CALL CTRL_MAP_INI( myThid )
CALL BARRIER(myThid)
CALL COST_INIT_VARIA( myThid )
CALL BARRIER(myThid)
C
IF (debugMode)
& CALL DEBUG_LEAVE('PACKAGES_INIT_VARIABLES',myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE PRESSURE_FOR_EOS(
I bi, bj, iMin, iMax, jMin, jMax, k,
O locPres,
I myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER bi, bj, k
INTEGER iMin,iMax,jMin,jMax
Real*8 locPres(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
INTEGER myThid
INTEGER i,j
C
C
IF ( usingZCoords ) THEN
IF ( useDynP_inEos_Zc ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
locPres(i,j) = rhoConst*(
& totPhiHyd(i,j,k,bi,bj)
& -rC(k)*gravity )
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
locPres(i,j) = -rhoConst*rC(k)*gravity
ENDDO
ENDDO
ENDIF
ELSEIF ( usingPCoords ) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
locPres(i,j) = rC(k)
ENDDO
ENDDO
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE READ_PICKUP(
I myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER maxNoChkptLev
PARAMETER ( maxNoChkptLev = 2 )
COMMON / RESTART_I /
& nCheckLev,
& tempStartAB, saltStartAB,
& mom_StartAB, nHydStartAB,
& dPhiNHstatus
INTEGER nCheckLev
INTEGER tempStartAB
INTEGER saltStartAB
INTEGER mom_StartAB
INTEGER nHydStartAB
INTEGER dPhiNHstatus
COMMON / RESTART_C /
& checkPtSuff
CHARACTER*(5) checkPtSuff(maxNoChkptLev)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
INTEGER myIter
INTEGER myThid
INTEGER fp
CHARACTER*(MAX_LEN_FNAM) fn
CHARACTER*(10) suff
INTEGER filePrec, nbFields
INTEGER missFldDim, nMissing
PARAMETER( missFldDim = 20 )
CHARACTER*(8) missFldList(missFldDim)
INTEGER j, nj, ioUnit
CHARACTER*(MAX_LEN_MBUF) msgBuf
DO j = 1,MAX_LEN_FNAM
fn(j:j) = ' '
ENDDO
IF (pickupSuff .EQ. ' ') THEN
WRITE(suff,'(I10.10)') myIter
ELSE
WRITE(suff,'(A10)') pickupSuff
ENDIF
WRITE(fn,'(A,A10)') 'pickup.',suff
IF (pickup_read_mdsio) THEN
fp = precFloat64
CALL READ_MFLDS_SET(
I fn,
O nbFields, filePrec,
I Nr, myIter, myThid )
IF ( myThid .EQ. 1 ) THEN
IF ( nbFields.GE.0 .AND. filePrec.NE.fp ) THEN
WRITE(msgBuf,'(2A,I4)') 'READ_PICKUP: ',
& 'pickup-file binary precision do not match !'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(A,2(A,I4))') 'READ_PICKUP: ',
& 'file prec.=', filePrec, ' but expecting prec.=', fp
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R READ_PICKUP (data-prec Pb)'
ENDIF
ENDIF
IF ( nbFields.LE.0 ) THEN
ioUnit = errorMessageUnit
IF ( pickupStrictlyMatch ) THEN
WRITE(msgBuf,'(4A)') 'READ_PICKUP: ',
& 'no field-list found in meta-file',
& ' => cannot check for strick-matching'
CALL PRINT_ERROR( msgBuf, myThid )
WRITE(msgBuf,'(4A)') 'READ_PICKUP: ',
& 'try with " pickupStrictlyMatch=.FALSE.,"',
& ' in file: "data", NameList: "PARM03"'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
STOP 'ABNORMAL END: S/R READ_PICKUP'
ELSE
WRITE(msgBuf,'(4A)') 'WARNING >> READ_PICKUP: ',
& ' no field-list found'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
IF ( nbFields.EQ.-1 ) THEN
WRITE(msgBuf,'(4A)') 'WARNING >> ',
& ' try to read pickup as currently written'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
ELSE
WRITE(msgBuf,'(4A)') 'WARNING >> ',
& ' try to read pickup as it used to be written'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
WRITE(msgBuf,'(4A)') 'WARNING >> ',
& ' until checkpoint59i (2007 Oct 22)'
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
ENDIF
ENDIF
ENDIF
IF ( nbFields.EQ.0 ) THEN
IF ( usePickupBeforeC54 ) THEN
CALL READ_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gU, 2, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, guNm1, 3, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, vVel, 4, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gV, 5, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gvNm1, 6, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, theta, 7, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gT, 8, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gtNm1, 9, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, salt, 10, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gS, 11, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gsNm1,12, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, 1, etaN,
& 12*Nr+1, myIter,myThid )
ELSE
CALL READ_REC_3D_RL( fn, fp, Nr, uVel, 1, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, guNm1, 2, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, vVel, 3, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gvNm1, 4, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, theta, 5, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gtNm1, 6, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, salt, 7, myIter,myThid )
CALL READ_REC_3D_RL( fn, fp, Nr, gsNm1, 8, myIter,myThid )
nj = 8
CALL READ_REC_3D_RL( fn,fp,1, etaN, nj*Nr+1, myIter,myThid )
IF ( exactConserv ) THEN
CALL READ_REC_3D_RL(fn,fp,1,dEtaHdt,nj*Nr+2,myIter,myThid )
ENDIF
IF ( nonlinFreeSurf.GT.0 ) THEN
CALL READ_REC_3D_RL(fn,fp,1, etaH, nj*Nr+3, myIter,myThid )
ENDIF
ENDIF
IF ( useDynP_inEos_Zc ) THEN
WRITE(fn,'(A,A10)') 'pickup_ph.',suff
CALL READ_REC_3D_RL( fn, fp, Nr, totPhiHyd,1,myIter,myThid )
ENDIF
ELSE
nj = 0
CALL READ_MFLDS_3D_RL( 'Uvel ', uVel,
& nj, fp, Nr, myIter, myThid )
CALL READ_MFLDS_3D_RL( 'Vvel ', vVel,
& nj, fp, Nr, myIter, myThid )
CALL READ_MFLDS_3D_RL( 'Theta ', theta,
& nj, fp, Nr, myIter, myThid )
CALL READ_MFLDS_3D_RL( 'Salt ', salt,
& nj, fp, Nr, myIter, myThid )
IF ( momStepping ) THEN
CALL READ_MFLDS_3D_RL( 'GuNm1 ', guNm1,
& nj, fp, Nr, myIter, myThid )
CALL READ_MFLDS_3D_RL( 'GvNm1 ', gvNm1,
& nj, fp, Nr, myIter, myThid )
ENDIF
IF ( AdamsBashforthGt ) THEN
CALL READ_MFLDS_3D_RL( 'GtNm1 ', gtNm1,
& nj, fp, Nr, myIter, myThid )
ENDIF
IF ( AdamsBashforthGs ) THEN
CALL READ_MFLDS_3D_RL( 'GsNm1 ', gsNm1,
& nj, fp, Nr, myIter, myThid )
ENDIF
IF ( useDynP_inEos_Zc ) THEN
CALL READ_MFLDS_3D_RL( 'PhiHyd ', totPhiHyd,
& nj, fp, Nr, myIter, myThid )
ENDIF
nj = nj*Nr
CALL READ_MFLDS_3D_RL( 'EtaN ', etaN,
& nj, fp, 1 , myIter, myThid )
IF ( exactConserv ) THEN
CALL READ_MFLDS_3D_RL( 'dEtaHdt ', dEtaHdt,
& nj, fp, 1 , myIter, myThid )
ENDIF
IF ( nonlinFreeSurf.GT.0 ) THEN
CALL READ_MFLDS_3D_RL( 'EtaH ', etaH,
& nj, fp, 1 , myIter, myThid )
ENDIF
ENDIF
nMissing = missFldDim
CALL READ_MFLDS_CHECK(
O missFldList,
U nMissing,
I myIter, myThid )
IF ( nMissing.GT.missFldDim ) THEN
WRITE(msgBuf,'(2A,I4)') 'READ_PICKUP: ',
& 'missing fields list has been truncated to', missFldDim
CALL PRINT_ERROR( msgBuf, myThid )
STOP 'ABNORMAL END: S/R READ_PICKUP (list-size Pb)'
ENDIF
CALL CHECK_PICKUP(
I missFldList,
I nMissing, nbFields,
I myIter, myThid )
ENDIF
CALL EXCH_UV_3D_RL( uVel, vVel, .TRUE., Nr, myThid )
CALL EXCH_3D_RL( theta, Nr, myThid )
CALL EXCH_3D_RL( salt, Nr, myThid )
CALL EXCH_UV_3D_RL( guNm1, gvNm1, .TRUE., Nr, myThid )
CALL EXCH_3D_RL( gtNm1, Nr, myThid )
CALL EXCH_3D_RL( gsNm1, Nr, myThid )
CALL EXCH_XY_RL( etaN, myThid )
CALL EXCH_XY_RL( etaH, myThid )
CALL EXCH_XY_RL( detaHdt, myThid )
IF ( useDynP_inEos_Zc )
& CALL EXCH_3D_RL( totPhiHyd, Nr, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
subroutine rotate_uv2en_rl(
U uFldX, vFldY,
U uFldE, vFldN,
I xy2en, switchGrid, applyMask, kSize, mythid
& )
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
integer kSize
logical xy2en, switchGrid, applyMask
Real*8 uFldX(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
Real*8 vFldY(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
Real*8 uFldE(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
Real*8 vFldN(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
integer mythid
integer bi,bj
integer i,j,k,kk
Real*8 tmpU(1-olx:snx+olx,1-oly:sny+oly)
Real*8 tmpV(1-olx:snx+olx,1-oly:sny+oly)
CHARACTER*(MAX_LEN_MBUF) msgBuf
if ( (kSize.NE.1).AND.(kSize.NE.nr)
& .AND.(applyMask) ) then
WRITE(msgBuf,'(2A,I4,A)') ' ROTATE_UV2EN: ',
& 'no mask has ',kSize,' levels'
CALL PRINT_ERROR(msgBuf, myThid)
STOP 'ABNROMAL END: S/R ROTATE_UV2EN'
endif
do bj = mybylo(mythid),mybyhi(mythid)
do bi = mybxlo(mythid),mybxhi(mythid)
do k = 1,kSize
if ( (kSize.EQ.1).AND.(usingPCoords) ) then
kk=nr
else
kk=k
endif
if ( xy2en ) then
if ( switchGrid ) then
do i = 1-olx,snx+olx
tmpU(i,sny+Oly)=0.
tmpV(i,sny+Oly)=0.
enddo
do j = 1-oly,sny+oly-1
tmpU(snx+Olx,j)=0.
tmpV(snx+Olx,j)=0.
do i = 1-olx,snx+olx-1
tmpU(i,j) = 0.5d0
& *( uFldX(i+1,j,k,bi,bj) + uFldX(i,j,k,bi,bj) )
tmpV(i,j) = 0.5d0
& *( vFldY(i,j+1,k,bi,bj) + vFldY(i,j,k,bi,bj) )
if (applyMask) then
tmpU(i,j) = tmpU(i,j) * maskC(i,j,kk,bi,bj)
tmpV(i,j) = tmpV(i,j) * maskC(i,j,kk,bi,bj)
endif
enddo
enddo
else
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
tmpU(i,j) = uFldX(i,j,k,bi,bj)
tmpV(i,j) = vFldY(i,j,k,bi,bj)
if (applyMask) then
tmpU(i,j) = tmpU(i,j) * maskC(i,j,kk,bi,bj)
tmpV(i,j) = tmpV(i,j) * maskC(i,j,kk,bi,bj)
endif
enddo
enddo
endif!if ( switchGrid ) then
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
uFldE(i,j,k,bi,bj) =
& angleCosC(i,j,bi,bj)*tmpU(i,j)
& -angleSinC(i,j,bi,bj)*tmpV(i,j)
vFldN(i,j,k,bi,bj) =
& angleSinC(i,j,bi,bj)*tmpU(i,j)
& +angleCosC(i,j,bi,bj)*tmpV(i,j)
enddo
enddo
else!if (xy2en) then
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
tmpU(i,j) =
& angleCosC(i,j,bi,bj)*uFldE(i,j,k,bi,bj)
& +angleSinC(i,j,bi,bj)*vFldN(i,j,k,bi,bj)
tmpV(i,j) =
& -angleSinC(i,j,bi,bj)*uFldE(i,j,k,bi,bj)
& +angleCosC(i,j,bi,bj)*vFldN(i,j,k,bi,bj)
enddo
enddo
if ( switchGrid ) then
do i = 1-olx,snx+olx
uFldX(i,1,k,bi,bj)=0.
vFldY(i,1,k,bi,bj)=0.
enddo
do j = 1-oly+1,sny+oly
uFldX(1,j,k,bi,bj)=0.
vFldY(1,j,k,bi,bj)=0.
do i = 1-olx+1,snx+olx
uFldX(i,j,k,bi,bj) = 0.5d0
& *( tmpU(i-1,j) + tmpU(i,j) )
vFldY(i,j,k,bi,bj) = 0.5d0
& *( tmpV(i,j-1) + tmpV(i,j) )
if (applyMask) then
uFldX(i,j,k,bi,bj)=uFldX(i,j,k,bi,bj)*maskW(i,j,kk,bi,bj)
vFldY(i,j,k,bi,bj)=vFldY(i,j,k,bi,bj)*maskS(i,j,kk,bi,bj)
endif
enddo
enddo
else
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
uFldX(i,j,k,bi,bj) = tmpU(i,j)
vFldY(i,j,k,bi,bj) = tmpV(i,j)
if (applyMask) then
uFldX(i,j,k,bi,bj)=uFldX(i,j,k,bi,bj)*maskC(i,j,kk,bi,bj)
vFldY(i,j,k,bi,bj)=vFldY(i,j,k,bi,bj)*maskC(i,j,kk,bi,bj)
endif
enddo
enddo
endif!if ( switchGrid ) then
endif!if (xy2en) then
enddo
enddo
enddo
return
end
subroutine rotate_uv2en_rs(
U uFldX, vFldY,
U uFldE, vFldN,
I xy2en, switchGrid, applyMask, kSize, mythid
& )
c
c
implicit none
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
integer kSize
logical xy2en, switchGrid, applyMask
Real*8 uFldX(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
Real*8 vFldY(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
Real*8 uFldE(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
Real*8 vFldN(1-olx:snx+olx,1-oly:sny+oly,kSize,nsx,nsy)
integer mythid
integer bi,bj
integer i,j,k,kk
Real*8 tmpU(1-olx:snx+olx,1-oly:sny+oly)
Real*8 tmpV(1-olx:snx+olx,1-oly:sny+oly)
CHARACTER*(MAX_LEN_MBUF) msgBuf
if ( (kSize.NE.1).AND.(kSize.NE.nr)
& .AND.(applyMask) ) then
WRITE(msgBuf,'(2A,I4,A)') ' ROTATE_UV2EN: ',
& 'no mask has ',kSize,' levels'
CALL PRINT_ERROR(msgBuf, myThid)
STOP 'ABNROMAL END: S/R ROTATE_UV2EN'
endif
do bj = mybylo(mythid),mybyhi(mythid)
do bi = mybxlo(mythid),mybxhi(mythid)
do k = 1,kSize
if ( (kSize.EQ.1).AND.(usingPCoords) ) then
kk=nr
else
kk=k
endif
if ( xy2en ) then
if ( switchGrid ) then
do i = 1-olx,snx+olx
tmpU(i,sny+Oly)=0.
tmpV(i,sny+Oly)=0.
enddo
do j = 1-oly,sny+oly-1
tmpU(snx+Olx,j)=0.
tmpV(snx+Olx,j)=0.
do i = 1-olx,snx+olx-1
tmpU(i,j) = 0.5d0
& *( uFldX(i+1,j,k,bi,bj) + uFldX(i,j,k,bi,bj) )
tmpV(i,j) = 0.5d0
& *( vFldY(i,j+1,k,bi,bj) + vFldY(i,j,k,bi,bj) )
if (applyMask) then
tmpU(i,j) = tmpU(i,j) * maskC(i,j,kk,bi,bj)
tmpV(i,j) = tmpV(i,j) * maskC(i,j,kk,bi,bj)
endif
enddo
enddo
else
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
tmpU(i,j) = uFldX(i,j,k,bi,bj)
tmpV(i,j) = vFldY(i,j,k,bi,bj)
if (applyMask) then
tmpU(i,j) = tmpU(i,j) * maskC(i,j,kk,bi,bj)
tmpV(i,j) = tmpV(i,j) * maskC(i,j,kk,bi,bj)
endif
enddo
enddo
endif!if ( switchGrid ) then
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
uFldE(i,j,k,bi,bj) =
& angleCosC(i,j,bi,bj)*tmpU(i,j)
& -angleSinC(i,j,bi,bj)*tmpV(i,j)
vFldN(i,j,k,bi,bj) =
& angleSinC(i,j,bi,bj)*tmpU(i,j)
& +angleCosC(i,j,bi,bj)*tmpV(i,j)
enddo
enddo
else!if (xy2en) then
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
tmpU(i,j) =
& angleCosC(i,j,bi,bj)*uFldE(i,j,k,bi,bj)
& +angleSinC(i,j,bi,bj)*vFldN(i,j,k,bi,bj)
tmpV(i,j) =
& -angleSinC(i,j,bi,bj)*uFldE(i,j,k,bi,bj)
& +angleCosC(i,j,bi,bj)*vFldN(i,j,k,bi,bj)
enddo
enddo
if ( switchGrid ) then
do i = 1-olx,snx+olx
uFldX(i,1,k,bi,bj)=0.
vFldY(i,1,k,bi,bj)=0.
enddo
do j = 1-oly+1,sny+oly
uFldX(1,j,k,bi,bj)=0.
vFldY(1,j,k,bi,bj)=0.
do i = 1-olx+1,snx+olx
uFldX(i,j,k,bi,bj) = 0.5d0
& *( tmpU(i-1,j) + tmpU(i,j) )
vFldY(i,j,k,bi,bj) = 0.5d0
& *( tmpV(i,j-1) + tmpV(i,j) )
if (applyMask) then
uFldX(i,j,k,bi,bj)=uFldX(i,j,k,bi,bj)*maskW(i,j,kk,bi,bj)
vFldY(i,j,k,bi,bj)=vFldY(i,j,k,bi,bj)*maskS(i,j,kk,bi,bj)
endif
enddo
enddo
else
do j = 1-oly,sny+oly
do i = 1-olx,snx+olx
uFldX(i,j,k,bi,bj) = tmpU(i,j)
vFldY(i,j,k,bi,bj) = tmpV(i,j)
if (applyMask) then
uFldX(i,j,k,bi,bj)=uFldX(i,j,k,bi,bj)*maskC(i,j,kk,bi,bj)
vFldY(i,j,k,bi,bj)=vFldY(i,j,k,bi,bj)*maskC(i,j,kk,bi,bj)
endif
enddo
enddo
endif!if ( switchGrid ) then
endif!if (xy2en) then
enddo
enddo
enddo
return
end
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
Real*8 FUNCTION SW_PTMP (S,T,P,PR)
C
C
IMPLICIT NONE
Real*8 S,T,P,PR
Real*8 sw_adtg
EXTERNAL sw_adtg
Real*8 del_P ,del_th, th, q
Real*8 onehalf, two, three
PARAMETER ( onehalf = 0.5d0, two = 2.d0, three = 3.d0 )
del_P = PR - P
del_th = del_P*sw_adtg(S,T,P)
th = T + onehalf*del_th
q = del_th
del_th = del_P*sw_adtg(S,th,P+onehalf*del_P)
th = th + (1 - 1/sqrt(two))*(del_th - q)
q = (two-sqrt(two))*del_th + (-two+three/sqrt(two))*q
del_th = del_P*sw_adtg(S,th,P+onehalf*del_P)
th = th + (1 + 1/sqrt(two))*(del_th - q)
q = (two + sqrt(two))*del_th + (-two-three/sqrt(two))*q
del_th = del_P*sw_adtg(S,th,P+del_P)
SW_PTMP = th + (del_th - two*q)/(two*three)
RETURN
END
Real*8 FUNCTION SW_TEMP( S, T, P, PR )
C
C
IMPLICIT NONE
Real*8 S, T, P, PR
Real*8 sw_adtg
EXTERNAL sw_adtg
Real*8 del_P ,del_th, th, q
Real*8 onehalf, two, three
PARAMETER ( onehalf = 0.5d0, two = 2.d0, three = 3.d0 )
del_P = P - PR ! to get in-situ from potential temperature
del_th = del_P*sw_adtg(S,T,P)
th = T + onehalf*del_th
q = del_th
del_th = del_P*sw_adtg(S,th,P+onehalf*del_P)
th = th + (1 - 1/sqrt(two))*(del_th - q)
q = (two-sqrt(two))*del_th + (-two+three/sqrt(two))*q
del_th = del_P*sw_adtg(S,th,P+onehalf*del_P)
th = th + (1 + 1/sqrt(two))*(del_th - q)
q = (two + sqrt(two))*del_th + (-two-three/sqrt(two))*q
del_th = del_P*sw_adtg(S,th,P+del_P)
SW_temp= th + (del_th - two*q)/(two*three)
RETURN
END
Real*8 FUNCTION SW_ADTG (S,T,P)
C
IMPLICIT NONE
Real*8 S,T,P
Real*8 a0,a1,a2,a3,b0,b1,c0,c1,c2,c3,d0,d1,e0,e1,e2
Real*8 sref
sref = 35.d0
a0 = 3.5803D-5
a1 = +8.5258D-6
a2 = -6.836D-8
a3 = 6.6228D-10
b0 = +1.8932D-6
b1 = -4.2393D-8
c0 = +1.8741D-8
c1 = -6.7795D-10
c2 = +8.733D-12
c3 = -5.4481D-14
d0 = -1.1351D-10
d1 = 2.7759D-12
e0 = -4.6206D-13
e1 = +1.8676D-14
e2 = -2.1687D-16
SW_ADTG = a0 + (a1 + (a2 + a3*T)*T)*T
& + (b0 + b1*T)*(S-sref)
& + ( (c0 + (c1 + (c2 + c3*T)*T)*T) + (d0 + d1*T)*(S-sref) )*P
& + ( e0 + (e1 + e2*T)*T )*P*P
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE SOLVE_FOR_PRESSURE( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
Real*8 cg2d_x(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 cg2d_b(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
LOGICAL DIFFERENT_MULTIPLE
EXTERNAL DIFFERENT_MULTIPLE
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER i,j,k,bi,bj
INTEGER ks
INTEGER numIters
Real*8 firstResidual,lastResidual
Real*8 tmpFac
Real*8 sumEmP, tileEmP(nSx,nSy)
LOGICAL putPmEinXvector
INTEGER ioUnit
CHARACTER*10 sufx
CHARACTER*(MAX_LEN_MBUF) msgBuf
Real*8 cg3d_b(1)
cg3d_b(1) = 0.
putPmEinXvector = .FALSE.
IF ( myIter.EQ.1+nIter0 .AND. debugLevel .GE. debLevA ) THEN
IF ( myThid .EQ. 1 ) THEN
ioUnit = standardMessageUnit
WRITE(msgBuf,'(2A,L5)') 'SOLVE_FOR_PRESSURE:',
& ' putPmEinXvector =', putPmEinXvector
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
ENDIF
ENDIF
sumEmP = 0.
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
etaNm1(i,j,bi,bj) = etaN(i,j,bi,bj)
cg2d_x(i,j,bi,bj) = Bo_surf(i,j,bi,bj)*etaN(i,j,bi,bj)
cg2d_b(i,j,bi,bj) = 0.
ENDDO
ENDDO
IF (useRealFreshWaterFlux.AND.fluidIsWater) THEN
tmpFac = freeSurfFac*mass2rUnit
IF (exactConserv)
& tmpFac = freeSurfFac*mass2rUnit*implicDiv2DFlow
DO j=1,sNy
DO i=1,sNx
cg2d_b(i,j,bi,bj) =
& tmpFac*rA(i,j,bi,bj)*EmPmR(i,j,bi,bj)/deltaTMom
ENDDO
ENDDO
ENDIF
IF ( putPmEinXvector ) THEN
tileEmP(bi,bj) = 0.
DO j=1,sNy
DO i=1,sNx
tileEmP(bi,bj) = tileEmP(bi,bj)
& + rA(i,j,bi,bj)*EmPmR(i,j,bi,bj)
& *maskInC(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
IF ( putPmEinXvector ) THEN
CALL GLOBAL_SUM_TILE_RL( tileEmP, sumEmP, myThid )
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
IF ( putPmEinXvector ) THEN
tmpFac = 0.
IF (globalArea.GT.0.) tmpFac =
& freeSurfFac*deltaTfreesurf*mass2rUnit*sumEmP/globalArea
DO j=1,sNy
DO i=1,sNx
cg2d_x(i,j,bi,bj) = cg2d_x(i,j,bi,bj)
& - tmpFac*Bo_surf(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
DO k=Nr,1,-1
CALL CALC_DIV_GHAT(
I bi,bj,k,
U cg2d_b, cg3d_b,
I myThid )
ENDDO
ENDDO
ENDDO
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
IF ( exactConserv ) THEN
DO j=1,sNy
DO i=1,sNx
ks = ksurfC(i,j,bi,bj)
cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)
& -freeSurfFac*rA(i,j,bi,bj)*deepFac2F(ks)
& /deltaTMom/deltaTfreesurf
& * etaH(i,j,bi,bj)
ENDDO
ENDDO
ELSE
DO j=1,sNy
DO i=1,sNx
ks = ksurfC(i,j,bi,bj)
cg2d_b(i,j,bi,bj) = cg2d_b(i,j,bi,bj)
& -freeSurfFac*rA(i,j,bi,bj)*deepFac2F(ks)
& /deltaTMom/deltaTfreesurf
& * etaN(i,j,bi,bj)
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
IF ( debugLevel .GE. debLevB ) THEN
CALL DEBUG_STATS_RL(1,cg2d_b,'cg2d_b (SOLVE_FOR_PRESSURE)',
& myThid)
ENDIF
IF ( DIFFERENT_MULTIPLE(diagFreq, myTime, deltaTClock) ) THEN
WRITE(sufx,'(I10.10)') myIter
CALL WRITE_FLD_XY_RL( 'cg2d_b.', sufx, cg2d_b, myIter, myThid )
ENDIF
firstResidual=0.
lastResidual=0.
numIters=cg2dMaxIters
IF (.TRUE.) THEN
CALL CG2D(
U cg2d_b,
U cg2d_x,
O firstResidual,
O lastResidual,
U numIters,
I myThid )
ENDIF
CALL EXCH_XY_RL ( cg2d_x, myThid )
IF ( debugLevel .GE. debLevB ) THEN
CALL DEBUG_STATS_RL(1,cg2d_x,'cg2d_x (SOLVE_FOR_PRESSURE)',
& myThid)
ENDIF
IF ( DIFFERENT_MULTIPLE(monitorFreq,myTime,deltaTClock)
& ) THEN
IF ( debugLevel .GE. debLevA ) THEN
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(A34,1PE24.14)') 'cg2d_init_res =',firstResidual
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
WRITE(msgBuf,'(A34,I6)') 'cg2d_iters =',numIters
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
WRITE(msgBuf,'(A34,1PE24.14)') 'cg2d_res =',lastResidual
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
ENDIF
ENDIF
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
etaN(i,j,bi,bj) = recip_Bo(i,j,bi,bj)*cg2d_x(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE STATE_SUMMARY( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
CHARACTER*(MAX_LEN_MBUF) msgBuf
IF ( myThid .EQ. 1 ) THEN
WRITE(msgBuf,'(A)')
&'// ======================================================='
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
WRITE(msgBuf,'(A)') '// Model current state'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
WRITE(msgBuf,'(A)')
&'// ======================================================='
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
WRITE(msgBuf,'(A)') ' '
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , myThid )
ENDIF
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE SOLVE_PENTADIAGONAL(
I iMin,iMax, jMin,jMax,
U a5d, b5d, c5d, d5d, e5d,
U y5d,
O errCode,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER iMin,iMax,jMin,jMax
Real*8 a5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 b5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 c5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 d5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 e5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 y5d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER errCode
INTEGER bi, bj, myThid
INTEGER i,j,k
Real*8 y5d_m1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 a5d_prime(Nr), b5d_prime(Nr)
Real*8 c5d_prime(Nr), d5d_prime(Nr), e5d_prime(Nr)
Real*8 y5d_prime(Nr), y5d_update(Nr), tmpval
errCode = 0
DO j=jMin,jMax
DO i=iMin,iMax
DO k=1,Nr
y5d_m1(i,j,k) = y5d(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
DO k=1,Nr
a5d_prime(k) = 0.d0
b5d_prime(k) = 0.d0
c5d_prime(k) = 0.d0
d5d_prime(k) = 0.d0
e5d_prime(k) = 0.d0
y5d_prime(k) = 0.d0
y5d_update(k) = 0.d0
ENDDO
DO k=1,Nr
IF (k.EQ.1) THEN
a5d_prime(k) = 0.d0
b5d_prime(k) = 0.d0
c5d_prime(k) = c5d(i,j,k)
d5d_prime(k) = d5d(i,j,k)
e5d_prime(k) = e5d(i,j,k)
y5d_prime(k) = y5d_m1(i,j,k)
ELSEIF (k.EQ.2) THEN
a5d_prime(k) = 0.d0
b5d_prime(k) = 0.d0
c5d_prime(k) = c5d(i,j,k)
& -b5d(i,j,k)*d5d_prime(k-1)
d5d_prime(k) = d5d(i,j,k)
& -b5d(i,j,k)*e5d_prime(k-1)
e5d_prime(k) = e5d(i,j,k)
y5d_prime(k) = y5d_m1(i,j,k)
& -b5d(i,j,k)*y5d_prime(k-1)
ELSE
a5d_prime(k) = 0.d0
b5d_prime(k) = 0.d0
c5d_prime(k) = c5d(i,j,k)
& -a5d(i,j,k)*e5d_prime(k-2)
& -(b5d(i,j,k)-a5d(i,j,k)*d5d_prime(k-2))*d5d_prime(k-1)
d5d_prime(k) = d5d(i,j,k)
& -(b5d(i,j,k)-a5d(i,j,k)*d5d_prime(k-2))*e5d_prime(k-1)
e5d_prime(k) = e5d(i,j,k)
y5d_prime(k) = y5d_m1(i,j,k)
& -a5d(i,j,k)*y5d_prime(k-2)
& -(b5d(i,j,k)-a5d(i,j,k)*d5d_prime(k-2))*y5d_prime(k-1)
ENDIF
tmpval=c5d_prime(k)
IF ( tmpval.NE.0.d0 ) THEN
a5d_prime(k) = a5d_prime(k) / tmpval
b5d_prime(k) = b5d_prime(k) / tmpval
c5d_prime(k) = 1.d0
d5d_prime(k) = d5d_prime(k) / tmpval
e5d_prime(k) = e5d_prime(k) / tmpval
y5d_prime(k) = y5d_prime(k) / tmpval
ELSE
a5d_prime(k) = 0.d0
b5d_prime(k) = 0.d0
c5d_prime(k) = 0.d0
d5d_prime(k) = 0.d0
e5d_prime(k) = 0.d0
y5d_prime(k) = 0.d0
errCode = 1
ENDIF
ENDDO
DO k=Nr,1,-1
IF (k.EQ.Nr) THEN
y5d_update(k) = y5d_prime(k)
ELSEIF (k.EQ.Nr-1) THEN
y5d_update(k) = y5d_prime(k)
& - y5d_update(k+1)*d5d_prime(k)
ELSE
y5d_update(k) = y5d_prime(k)
& - y5d_update(k+1)*d5d_prime(k)
& - y5d_update(k+2)*e5d_prime(k)
ENDIF
ENDDO
DO k=1,Nr
y5d(i,j,k,bi,bj)=y5d_update(k)
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE SOLVE_TRIDIAGONAL(
I iMin,iMax, jMin,jMax,
I a3d, b3d, c3d,
U y3d,
O errCode,
I bi, bj, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
INTEGER iMin,iMax,jMin,jMax
Real*8 a3d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 b3d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 c3d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 y3d(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr,nSx,nSy)
INTEGER errCode
INTEGER bi, bj, myThid
INTEGER i,j,k
Real*8 tmpvar
Real*8 c3d_prime(Nr), y3d_prime(Nr),y3d_update(Nr)
Real*8 c3d_m1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
Real*8 y3d_m1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
errCode = 0
DO j=jMin,jMax
DO i=iMin,iMax
DO k=1,Nr
c3d_m1(i,j,k) = c3d(i,j,k)
y3d_m1(i,j,k) = y3d(i,j,k,bi,bj)
ENDDO
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
DO k=1,Nr
c3d_prime(k) = 0.d0
y3d_prime(k) = 0.d0
y3d_update(k) = 0.d0
ENDDO
DO k=1,Nr
IF ( k.EQ.1 ) THEN
IF ( b3d(i,j,1).NE.0.d0 ) THEN
c3d_prime(1) = c3d_m1(i,j,1) / b3d(i,j,1)
y3d_prime(1) = y3d_m1(i,j,1) / b3d(i,j,1)
ELSE
c3d_prime(1) = 0.d0
y3d_prime(1) = 0.d0
errCode = 1
ENDIF
ELSE
tmpvar = b3d(i,j,k) - a3d(i,j,k)*c3d_prime(k-1)
IF ( tmpvar .NE. 0.d0 ) THEN
c3d_prime(k) = c3d_m1(i,j,k) / tmpvar
y3d_prime(k) = (y3d_m1(i,j,k) - y3d_prime(k-1)*a3d(i,j,k))
& / tmpvar
ELSE
c3d_prime(k) = 0.d0
y3d_prime(k) = 0.d0
errCode = 1
ENDIF
ENDIF
ENDDO
DO k=Nr,1,-1
IF ( k.EQ.Nr ) THEN
y3d_update(k)=y3d_prime(k)
ELSE
y3d_update(k)=y3d_prime(k)-c3d_prime(k)*y3d_update(k+1)
ENDIF
ENDDO
DO k=1,Nr
y3d(i,j,k,bi,bj)=y3d_update(k)
ENDDO
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE TAUEDDY_EXTERNAL_FORCING_U(
I iMin, iMax, jMin, jMax,bi,bj,kLev,
I myCurrentTime,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
Real*8 myCurrentTime
INTEGER myThid
RETURN
END
SUBROUTINE TAUEDDY_EXTERNAL_FORCING_V(
I iMin, iMax, jMin, jMax,bi,bj,kLev,
I myCurrentTime,myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
INTEGER iMin, iMax, jMin, jMax, kLev, bi, bj
Real*8 myCurrentTime
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE TAUEDDY_INIT_VARIA( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
SUBROUTINE TIMESTEP( bi, bj, iMin, iMax, jMin, jMax, k,
I dPhiHydX,dPhiHydY, phiSurfX, phiSurfY,
I guDissip, gvDissip,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER maxNoChkptLev
PARAMETER ( maxNoChkptLev = 2 )
COMMON / RESTART_I /
& nCheckLev,
& tempStartAB, saltStartAB,
& mom_StartAB, nHydStartAB,
& dPhiNHstatus
INTEGER nCheckLev
INTEGER tempStartAB
INTEGER saltStartAB
INTEGER mom_StartAB
INTEGER nHydStartAB
INTEGER dPhiNHstatus
COMMON / RESTART_C /
& checkPtSuff
CHARACTER*(5) checkPtSuff(maxNoChkptLev)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER bi,bj,iMin,iMax,jMin,jMax
INTEGER k
Real*8 dPhiHydX(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 dPhiHydY(1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 phiSurfX(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 phiSurfY(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 guDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 gvDissip(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 myTime
INTEGER myIter, myThid
INTEGER i,j
Real*8 phxFac,phyFac, psFac
Real*8 gUtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 gVtmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
LOGICAL externForcDiagIsOn
Real*8 guCor(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 gvCor(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
psFac = pfFacMom*(1.d0 - implicSurfPress)
& *recip_deepFacC(k)*recip_rhoFacC(k)
phxFac = pfFacMom
phyFac = pfFacMom
externForcDiagIsOn = useDiagnostics .AND. momForcing
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
gUtmp(i,j) = 0.d0
gVtmp(i,j) = 0.d0
guCor(i,j) = 0.d0
gvCor(i,j) = 0.d0
ENDDO
ENDDO
IF ( .NOT.staggerTimeStep .AND. .NOT. implicitIntGravWave ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj) - phxFac*dPhiHydX(i,j)
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj) - phyFac*dPhiHydY(i,j)
ENDDO
ENDDO
phxFac = 0.
phyFac = 0.
ENDIF
IF ( momViscosity .AND. momDissip_In_AB) THEN
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = gU(i,j,k,bi,bj) + guDissip(i,j)
gV(i,j,k,bi,bj) = gV(i,j,k,bi,bj) + gvDissip(i,j)
ENDDO
ENDDO
ENDIF
IF ( momForcing .AND. momForcingOutAB.NE.1 ) THEN
CALL EXTERNAL_FORCING_U(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
CALL EXTERNAL_FORCING_V(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
ENDIF
CALL ADAMS_BASHFORTH2(
I bi, bj, k,
U gU, guNm1,
I mom_StartAB, myIter, myThid )
CALL ADAMS_BASHFORTH2(
I bi, bj, k,
U gV, gvNm1,
I mom_StartAB, myIter, myThid )
IF ( momForcing .AND. momForcingOutAB.EQ.1 ) THEN
CALL EXTERNAL_FORCING_U(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
CALL EXTERNAL_FORCING_V(
I iMin,iMax,jMin,jMax,bi,bj,k,
I myTime,myThid)
ENDIF
IF (useCDscheme) THEN
DO j=jMin,jMax
DO i=iMin,iMax
gUtmp(i,j) = gU(i,j,k,bi,bj)
gVtmp(i,j) = gV(i,j,k,bi,bj)
ENDDO
ENDDO
IF ( momViscosity .AND. .NOT.momDissip_In_AB ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
gUtmp(i,j) = gUtmp(i,j) + guDissip(i,j)
gVtmp(i,j) = gVtmp(i,j) + gvDissip(i,j)
ENDDO
ENDDO
ENDIF
CALL CD_CODE_SCHEME(
I bi,bj,k, dPhiHydX,dPhiHydY, gUtmp,gVtmp,
O guCor,gvCor,
I myTime, myIter, myThid)
DO j=jMin,jMax
DO i=iMin,iMax
gUtmp(i,j) = gU(i,j,k,bi,bj)
& + guCor(i,j)
gVtmp(i,j) = gV(i,j,k,bi,bj)
& + gvCor(i,j)
ENDDO
ENDDO
ELSE
DO j=jMin,jMax
DO i=iMin,iMax
gUtmp(i,j) = gU(i,j,k,bi,bj)
gVtmp(i,j) = gV(i,j,k,bi,bj)
ENDDO
ENDDO
ENDIF
IF ( momViscosity .AND. .NOT.momDissip_In_AB ) THEN
DO j=jMin,jMax
DO i=iMin,iMax
gUtmp(i,j) = gUtmp(i,j) + guDissip(i,j)
gVtmp(i,j) = gVtmp(i,j) + gvDissip(i,j)
ENDDO
ENDDO
ENDIF
DO j=jMin,jMax
DO i=iMin,iMax
gU(i,j,k,bi,bj) = uVel(i,j,k,bi,bj)
& +deltaTmom*(
& gUtmp(i,j)
& - psFac*phiSurfX(i,j)
& - phxFac*dPhiHydX(i,j)
& )*maskW(i,j,k,bi,bj)
ENDDO
ENDDO
DO j=jMin,jMax
DO i=iMin,iMax
gV(i,j,k,bi,bj) = vVel(i,j,k,bi,bj)
& +deltaTmom*(
& gVtmp(i,j)
& - psFac*phiSurfY(i,j)
& - phyFac*dPhiHydY(i,j)
& )*maskS(i,j,k,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
SUBROUTINE THE_MAIN_LOOP( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
integer ilev_1
integer ilev_2
integer ilev_3
integer ilev_4
integer max_lev2
integer max_lev3
integer max_lev4
integer NDV3D, NDV2D, NEXF1, NEXF2, NCTRL1, NOB, NSI
PARAMETER (NDV3D = 12)
PARAMETER (NDV2D = 23)
PARAMETER (NEXF1 = 21)
PARAMETER (NEXF2 = 18)
PARAMETER (NCTRL1 = 18)
PARAMETER (NOB = 18)
PARAMETER (NSI = 19)
Real*8 StoreDynVars3D
& (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,NDV3D)
Real*8 StoreDynVars2D
& (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NDV2D)
Real*8 StoreEXF1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NEXF1)
Real*8 StoreEXF2(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NEXF2)
Real*8 StoreCTRLS1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NCTRL1)
Real*8 StoreOBCSN(1-Olx:sNx+Olx,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSS(1-Olx:sNx+Olx,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSE(1-OLy:sNy+OLy,Nr,nSx,nSy,NOB)
Real*8 StoreOBCSW(1-OLy:sNy+OLy,Nr,nSx,nSy,NOB)
Real*8 StoreSEAICE(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy,NSI)
COMMON /AUTODIFF_STORE_DYN/
& StoreDynVars3D,
& StoreDynVars2D
COMMON /AUTODIFF_STORE_EXF_FLUX/
& StoreEXF1
COMMON /AUTODIFF_STORE_EXF_ATMOS/
& StoreEXF2
COMMON /AUTODIFF_STORE_CTRL/
& StoreCTRLS1
COMMON /AUTODIFF_STORE_OBCSN/
& StoreOBCSN
COMMON /AUTODIFF_STORE_OBCSS/
& StoreOBCSS
COMMON /AUTODIFF_STORE_OBCSE/
& StoreOBCSE
COMMON /AUTODIFF_STORE_OBCSW/
& StoreOBCSW
COMMON /AUTODIFF_STORE_SEAICE/
& StoreSEAICE
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
COMMON /DYNVARS_CD/
& uVelD, vVelD,
& etaNm1,
& uNM1, vNM1
Real*8 uVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVelD (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 etaNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vNM1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
c
c
c
c
c
c
c
integer dimgen2d
integer dimgen3d
parameter ( dimgen2d = 1, dimgen3d = 0 )
integer maxcvars
parameter ( maxcvars = 60 )
integer ctrlprec
parameter ( ctrlprec = 64 )
common /controlparams_r/
& delZexp,
& forcingPrecond
Real*8 delZexp
Real*8 forcingPrecond
common /controlvars_l /
& doInitXX,
& doAdmTlm,
& doPackDiag,
& doZscaleUnpack,
& doZscalePack,
& doMainUnpack,
& doMainPack,
& doSinglePrecTapelev,
& doAdmtlmBypassAD
logical doInitXX
logical doAdmTlm
logical doPackDiag
logical doZscaleUnpack
logical doZscalePack
logical doMainUnpack
logical doMainPack
logical doSinglePrecTapelev
logical doAdmtlmBypassAD
common /controlvars_i/
& nvartype,
& nvarlength,
& ncvarindex,
& ncvarrecs,
& ncvarrecstart,
& ncvarrecsend,
& ncvarxmax,
& ncvarymax,
& ncvarnrmax,
& nwetctile,
& nwetstile,
& nwetwtile,
& nwetvtile,
& nwetcglobal,
& nwetsglobal,
& nwetwglobal,
& nwetvglobal,
& nbuffglobal
integer nvartype
integer nvarlength
integer ncvarindex ( maxcvars )
integer ncvarrecs ( maxcvars )
integer ncvarrecstart ( maxcvars )
integer ncvarrecsend ( maxcvars )
integer ncvarxmax ( maxcvars )
integer ncvarymax ( maxcvars )
integer ncvarnrmax ( maxcvars )
integer nwetctile ( nsx,nsy,nr )
integer nwetstile ( nsx,nsy,nr )
integer nwetwtile ( nsx,nsy,nr )
integer nwetvtile ( nsx,nsy,nr )
integer nwetcglobal ( nr )
integer nwetsglobal ( nr )
integer nwetwglobal ( nr )
integer nwetvglobal ( nr )
integer nbuffglobal
common /controlvars_c/
& ncvargrd
& , yadprefix
character*(1) ncvargrd(maxcvars)
character*(2) yadprefix
common /controlvec_header_i/
& filenvartype,
& filenvarlength,
& fileOptimCycle,
& filencbuffindex,
& fileIg,
& fileJg,
& fileI,
& fileJ,
& filensx,
& filensy,
& filek,
& filenWetcGlobal,
& filenWetsGlobal,
& filenWetwGlobal,
& filenWetvGlobal,
& filencvarindex,
& filencvarrecs,
& filencvarxmax,
& filencvarymax,
& filencvarnrmax
integer filenvartype
integer filenvarlength
integer fileOptimCycle
integer filencbuffindex
integer fileIg
integer fileJg
integer fileI
integer fileJ
integer filensx
integer filensy
integer filek
integer filenWetcGlobal(nr)
integer filenWetsGlobal(nr)
integer filenWetwGlobal(nr)
integer filenWetvGlobal(nr)
integer filencvarindex(maxcvars)
integer filencvarrecs(maxcvars)
integer filencvarxmax(maxcvars)
integer filencvarymax(maxcvars)
integer filencvarnrmax(maxcvars)
common /controlvec_header_r/
& filefc
Real*8 filefc
common /controlvec_header_c/
& fileYctrlid,
& filencvargrd
character*(10) fileYctrlid
character*( 1) filencvargrd(maxcvars)
common /ctrl_weights_unit_r/
& wunit,
& wareaunit
Real*8 wunit (nr,nsx,nsy)
Real*8 wareaunit (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ctrl_weights_atmos_r/
& whflux,
& wsflux,
& wtauu,
& wtauv,
& watemp,
& waqh,
& wprecip,
& wswflux,
& wswdown,
& wuwind,
& wvwind,
& wlwflux,
& wlwdown,
& wevap,
& wsnowprecip,
& wapressure,
& wrunoff,
& wsst,
& wsss,
& wbp
Real*8 whflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauu (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wtauv (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 watemp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 waqh (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wswdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wuwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wvwind (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwflux (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wlwdown (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wevap (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsnowprecip (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wapressure(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wrunoff (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsst (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wsss (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 wbp (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
c
common /controlvars_r/
& tmpfld2d
& , tmpfld3d
Real*8 tmpfld2d
& (1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
Real*8 tmpfld3d
& (1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
c
c
common /controlfiles_c/
& xx_theta_file
& , xx_salt_file
& , xx_hflux_file
& , xx_sflux_file
& , xx_tauu_file
& , xx_tauv_file
& , xx_atemp_file
& , xx_aqh_file
& , xx_precip_file
& , xx_swflux_file
& , xx_swdown_file
& , xx_lwflux_file
& , xx_lwdown_file
& , xx_evap_file
& , xx_snowprecip_file
& , xx_apressure_file
& , xx_runoff_file
& , xx_uwind_file
& , xx_vwind_file
& , xx_obcsn_file
& , xx_obcss_file
& , xx_obcsw_file
& , xx_obcse_file
& , xx_diffkr_file
& , xx_kapgm_file
& , xx_kapredi_file
& , xx_tr1_file
& , xx_sst_file
& , xx_sss_file
& , xx_depth_file
& , xx_efluxy_file
& , xx_efluxp_file
& , xx_bottomdrag_file
& , xx_edtaux_file
& , xx_edtauy_file
& , xx_uvel_file
& , xx_vvel_file
& , xx_etan_file
& , xx_relaxsst_file
& , xx_relaxsss_file
& , xx_theta_ini_fin_file
& , xx_salt_ini_fin_file
& , xx_siarea_file
& , xx_siheff_file
& , xx_sihsnow_file
& , xx_gen2d_file
& , xx_gen3d_file
cHFLUXM_CONTROL
& , xx_hfluxm_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_theta_file
character*(MAX_LEN_FNAM) xx_salt_file
character*(MAX_LEN_FNAM) xx_hflux_file
character*(MAX_LEN_FNAM) xx_sflux_file
character*(MAX_LEN_FNAM) xx_tauu_file
character*(MAX_LEN_FNAM) xx_tauv_file
character*(MAX_LEN_FNAM) xx_atemp_file
character*(MAX_LEN_FNAM) xx_aqh_file
character*(MAX_LEN_FNAM) xx_precip_file
character*(MAX_LEN_FNAM) xx_swflux_file
character*(MAX_LEN_FNAM) xx_swdown_file
character*(MAX_LEN_FNAM) xx_lwflux_file
character*(MAX_LEN_FNAM) xx_lwdown_file
character*(MAX_LEN_FNAM) xx_evap_file
character*(MAX_LEN_FNAM) xx_snowprecip_file
character*(MAX_LEN_FNAM) xx_apressure_file
character*(MAX_LEN_FNAM) xx_runoff_file
character*(MAX_LEN_FNAM) xx_uwind_file
character*(MAX_LEN_FNAM) xx_vwind_file
character*(MAX_LEN_FNAM) xx_obcsn_file
character*(MAX_LEN_FNAM) xx_obcss_file
character*(MAX_LEN_FNAM) xx_obcsw_file
character*(MAX_LEN_FNAM) xx_obcse_file
character*(MAX_LEN_FNAM) xx_diffkr_file
character*(MAX_LEN_FNAM) xx_kapgm_file
character*(MAX_LEN_FNAM) xx_kapredi_file
character*(MAX_LEN_FNAM) xx_tr1_file
character*(MAX_LEN_FNAM) xx_sst_file
character*(MAX_LEN_FNAM) xx_sss_file
character*(MAX_LEN_FNAM) xx_depth_file
character*(MAX_LEN_FNAM) xx_efluxy_file
character*(MAX_LEN_FNAM) xx_efluxp_file
character*(MAX_LEN_FNAM) xx_bottomdrag_file
character*(MAX_LEN_FNAM) xx_edtaux_file
character*(MAX_LEN_FNAM) xx_edtauy_file
character*(MAX_LEN_FNAM) xx_uvel_file
character*(MAX_LEN_FNAM) xx_vvel_file
character*(MAX_LEN_FNAM) xx_etan_file
character*(MAX_LEN_FNAM) xx_relaxsst_file
character*(MAX_LEN_FNAM) xx_relaxsss_file
character*(MAX_LEN_FNAM) xx_theta_ini_fin_file
character*(MAX_LEN_FNAM) xx_salt_ini_fin_file
character*(MAX_LEN_FNAM) xx_siarea_file
character*(MAX_LEN_FNAM) xx_siheff_file
character*(MAX_LEN_FNAM) xx_sihsnow_file
character*(MAX_LEN_FNAM) xx_gen2d_file
character*(MAX_LEN_FNAM) xx_gen3d_file
cHFLUXM_CONTROL
character*(MAX_LEN_FNAM) xx_hfluxm_file
cHFLUXM_CONTROL
common /packnames_c/
& yadmark,
& ctrlname,
& costname,
& scalname,
& maskname,
& metaname,
& yctrlid,
& yctrlposunpack,
& yctrlpospack
character*2 yadmark
character*9 ctrlname
character*9 costname
character*9 scalname
character*9 maskname
character*9 metaname
character*10 yctrlid
character*4 yctrlposunpack
character*4 yctrlpospack
c
common /controltimes_r/
& xx_hfluxperiod
& , xx_sfluxperiod
& , xx_tauuperiod
& , xx_tauvperiod
& , xx_atempperiod
& , xx_aqhperiod
& , xx_precipperiod
& , xx_swfluxperiod
& , xx_swdownperiod
& , xx_lwfluxperiod
& , xx_lwdownperiod
& , xx_evapperiod
& , xx_snowprecipperiod
& , xx_apressureperiod
& , xx_runoffperiod
& , xx_uwindperiod
& , xx_vwindperiod
& , xx_sstperiod
& , xx_sssperiod
& , xx_obcsnperiod
& , xx_obcssperiod
& , xx_obcswperiod
& , xx_obcseperiod
Real*8 xx_hfluxperiod
Real*8 xx_sfluxperiod
Real*8 xx_tauuperiod
Real*8 xx_tauvperiod
Real*8 xx_atempperiod
Real*8 xx_aqhperiod
Real*8 xx_precipperiod
Real*8 xx_swfluxperiod
Real*8 xx_swdownperiod
Real*8 xx_lwfluxperiod
Real*8 xx_lwdownperiod
Real*8 xx_evapperiod
Real*8 xx_snowprecipperiod
Real*8 xx_apressureperiod
Real*8 xx_runoffperiod
Real*8 xx_uwindperiod
Real*8 xx_vwindperiod
Real*8 xx_sstperiod
Real*8 xx_sssperiod
Real*8 xx_obcsnperiod
Real*8 xx_obcssperiod
Real*8 xx_obcswperiod
Real*8 xx_obcseperiod
common /ctrl_param_trend_removal/
& xx_hflux_remo_intercept, xx_hflux_remo_slope,
& xx_sflux_remo_intercept, xx_sflux_remo_slope,
& xx_tauu_remo_intercept, xx_tauu_remo_slope,
& xx_tauv_remo_intercept, xx_tauv_remo_slope,
& xx_atemp_remo_intercept, xx_atemp_remo_slope,
& xx_aqh_remo_intercept, xx_aqh_remo_slope,
& xx_precip_remo_intercept, xx_precip_remo_slope,
& xx_swflux_remo_intercept, xx_swflux_remo_slope,
& xx_swdown_remo_intercept, xx_swdown_remo_slope,
& xx_lwflux_remo_intercept, xx_lwflux_remo_slope,
& xx_lwdown_remo_intercept, xx_lwdown_remo_slope,
& xx_evap_remo_intercept, xx_evap_remo_slope,
& xx_snowprecip_remo_intercept,
& xx_snowprecip_remo_slope,
& xx_apressure_remo_intercept,
& xx_apressure_remo_slope,
& xx_runoff_remo_intercept, xx_runoff_remo_slope,
& xx_uwind_remo_intercept, xx_uwind_remo_slope,
& xx_vwind_remo_intercept, xx_vwind_remo_slope
Real*8 xx_hflux_remo_intercept, xx_hflux_remo_slope
Real*8 xx_sflux_remo_intercept, xx_sflux_remo_slope
Real*8 xx_tauu_remo_intercept, xx_tauu_remo_slope
Real*8 xx_tauv_remo_intercept, xx_tauv_remo_slope
Real*8 xx_atemp_remo_intercept, xx_atemp_remo_slope
Real*8 xx_aqh_remo_intercept, xx_aqh_remo_slope
Real*8 xx_precip_remo_intercept, xx_precip_remo_slope
Real*8 xx_swflux_remo_intercept, xx_swflux_remo_slope
Real*8 xx_swdown_remo_intercept, xx_swdown_remo_slope
Real*8 xx_lwflux_remo_intercept, xx_lwflux_remo_slope
Real*8 xx_lwdown_remo_intercept, xx_lwdown_remo_slope
Real*8 xx_evap_remo_intercept, xx_evap_remo_slope
Real*8 xx_snowprecip_remo_intercept
Real*8 xx_snowprecip_remo_slope
Real*8 xx_apressure_remo_intercept
Real*8 xx_apressure_remo_slope
Real*8 xx_runoff_remo_intercept, xx_runoff_remo_slope
Real*8 xx_uwind_remo_intercept, xx_uwind_remo_slope
Real*8 xx_vwind_remo_intercept, xx_vwind_remo_slope
common /controltimes_i/
& xx_hfluxstartdate1
& , xx_hfluxstartdate2
& , xx_sfluxstartdate1
& , xx_sfluxstartdate2
& , xx_tauustartdate1
& , xx_tauustartdate2
& , xx_tauvstartdate1
& , xx_tauvstartdate2
& , xx_atempstartdate1
& , xx_atempstartdate2
& , xx_aqhstartdate1
& , xx_aqhstartdate2
& , xx_precipstartdate1
& , xx_precipstartdate2
& , xx_swfluxstartdate1
& , xx_swfluxstartdate2
& , xx_swdownstartdate1
& , xx_swdownstartdate2
& , xx_snowprecipstartdate1
& , xx_snowprecipstartdate2
& , xx_lwfluxstartdate1
& , xx_lwfluxstartdate2
& , xx_lwdownstartdate1
& , xx_lwdownstartdate2
& , xx_evapstartdate1
& , xx_evapstartdate2
& , xx_apressurestartdate1
& , xx_apressurestartdate2
& , xx_runoffstartdate1
& , xx_runoffstartdate2
& , xx_uwindstartdate1
& , xx_uwindstartdate2
& , xx_vwindstartdate1
& , xx_vwindstartdate2
& , xx_sststartdate1
& , xx_sststartdate2
& , xx_sssstartdate1
& , xx_sssstartdate2
& , xx_hfluxstartdate
& , xx_sfluxstartdate
& , xx_tauustartdate
& , xx_tauvstartdate
& , xx_atempstartdate
& , xx_aqhstartdate
& , xx_precipstartdate
& , xx_swfluxstartdate
& , xx_swdownstartdate
& , xx_uwindstartdate
& , xx_snowprecipstartdate
& , xx_lwfluxstartdate
& , xx_lwdownstartdate
& , xx_evapstartdate
& , xx_apressurestartdate
& , xx_runoffstartdate
& , xx_vwindstartdate
& , xx_sststartdate
& , xx_sssstartdate
& , xx_obcsnstartdate1
& , xx_obcsnstartdate2
& , xx_obcssstartdate1
& , xx_obcssstartdate2
& , xx_obcswstartdate1
& , xx_obcswstartdate2
& , xx_obcsestartdate1
& , xx_obcsestartdate2
& , xx_obcsnstartdate
& , xx_obcssstartdate
& , xx_obcswstartdate
& , xx_obcsestartdate
integer xx_hfluxstartdate1
integer xx_hfluxstartdate2
integer xx_sfluxstartdate1
integer xx_sfluxstartdate2
integer xx_tauustartdate1
integer xx_tauustartdate2
integer xx_tauvstartdate1
integer xx_tauvstartdate2
integer xx_atempstartdate1
integer xx_atempstartdate2
integer xx_aqhstartdate1
integer xx_aqhstartdate2
integer xx_precipstartdate1
integer xx_precipstartdate2
integer xx_swfluxstartdate1
integer xx_swfluxstartdate2
integer xx_swdownstartdate1
integer xx_swdownstartdate2
integer xx_snowprecipstartdate1
integer xx_snowprecipstartdate2
integer xx_lwfluxstartdate1
integer xx_lwfluxstartdate2
integer xx_lwdownstartdate1
integer xx_lwdownstartdate2
integer xx_evapstartdate1
integer xx_evapstartdate2
integer xx_apressurestartdate1
integer xx_apressurestartdate2
integer xx_runoffstartdate1
integer xx_runoffstartdate2
integer xx_uwindstartdate1
integer xx_uwindstartdate2
integer xx_vwindstartdate1
integer xx_vwindstartdate2
integer xx_sststartdate1
integer xx_sststartdate2
integer xx_sssstartdate1
integer xx_sssstartdate2
integer xx_obcsnstartdate1
integer xx_obcsnstartdate2
integer xx_obcssstartdate1
integer xx_obcssstartdate2
integer xx_obcswstartdate1
integer xx_obcswstartdate2
integer xx_obcsestartdate1
integer xx_obcsestartdate2
integer xx_hfluxstartdate(4)
integer xx_sfluxstartdate(4)
integer xx_tauustartdate(4)
integer xx_tauvstartdate(4)
integer xx_atempstartdate(4)
integer xx_aqhstartdate(4)
integer xx_precipstartdate(4)
integer xx_swfluxstartdate(4)
integer xx_swdownstartdate(4)
integer xx_snowprecipstartdate(4)
integer xx_lwfluxstartdate(4)
integer xx_lwdownstartdate(4)
integer xx_evapstartdate(4)
integer xx_apressurestartdate(4)
integer xx_runoffstartdate(4)
integer xx_uwindstartdate(4)
integer xx_vwindstartdate(4)
integer xx_sststartdate(4)
integer xx_sssstartdate(4)
integer xx_obcsnstartdate(4)
integer xx_obcssstartdate(4)
integer xx_obcswstartdate(4)
integer xx_obcsestartdate(4)
character*( 80) fname_theta(2)
character*( 80) fname_salt(2)
character*( 80) fname_hflux(2)
character*( 80) fname_sflux(2)
character*( 80) fname_tauu(2)
character*( 80) fname_tauv(2)
character*( 80) fname_atemp(2)
character*( 80) fname_aqh(2)
character*( 80) fname_precip(2)
character*( 80) fname_swflux(2)
character*( 80) fname_swdown(2)
character*( 80) fname_snowprecip(2)
character*( 80) fname_lwflux(2)
character*( 80) fname_lwdown(2)
character*( 80) fname_evap(2)
character*( 80) fname_apressure(2)
character*( 80) fname_runoff(2)
character*( 80) fname_uwind(2)
character*( 80) fname_vwind(2)
character*( 80) fname_obcsn(2)
character*( 80) fname_obcss(2)
character*( 80) fname_obcsw(2)
character*( 80) fname_obcse(2)
character*( 80) fname_diffkr(2)
character*( 80) fname_kapgm(2)
character*( 80) fname_kapredi(2)
character*( 80) fname_tr1(2)
character*( 80) fname_sst(2)
character*( 80) fname_sss(2)
character*( 80) fname_depth(2)
character*( 80) fname_hfacc(2)
character*( 80) fname_efluxy(2)
character*( 80) fname_efluxp(2)
character*( 80) fname_bottomdrag(2)
character*( 80) fname_edtaux(2)
character*( 80) fname_edtauy(2)
character*( 80) fname_uvel(2)
character*( 80) fname_vvel(2)
character*( 80) fname_etan(2)
character*( 80) fname_relaxsst(2)
character*( 80) fname_relaxsss(2)
character*( 80) fname_siarea(2)
character*( 80) fname_siheff(2)
character*( 80) fname_sihsnow(2)
character*( 80) fname_gen2d(2)
character*( 80) fname_gen3d(2)
cHFLUXM_CONTROL
character*( 80) fname_hfluxm(2)
cHFLUXM_CONTROL
c
c
common /ctrl_dummy/
& xx_theta_dummy
& , xx_salt_dummy
& , xx_hflux_dummy
& , xx_sflux_dummy
& , xx_tauu_dummy
& , xx_tauv_dummy
& , xx_atemp_dummy
& , xx_aqh_dummy
& , xx_precip_dummy
& , xx_swflux_dummy
& , xx_swdown_dummy
& , xx_snowprecip_dummy
& , xx_lwflux_dummy
& , xx_lwdown_dummy
& , xx_evap_dummy
& , xx_apressure_dummy
& , xx_runoff_dummy
& , xx_uwind_dummy
& , xx_vwind_dummy
& , xx_obcsn_dummy
& , xx_obcss_dummy
& , xx_obcsw_dummy
& , xx_obcse_dummy
& , xx_diffkr_dummy
& , xx_kapgm_dummy
& , xx_kapredi_dummy
& , xx_tr1_dummy
& , xx_sst_dummy
& , xx_sss_dummy
& , xx_depth_dummy
& , xx_efluxy_dummy
& , xx_efluxp_dummy
& , xx_bottomdrag_dummy
& , xx_edtaux_dummy
& , xx_edtauy_dummy
& , xx_uvel_dummy
& , xx_vvel_dummy
& , xx_etan_dummy
& , xx_siarea_dummy
& , xx_siheff_dummy
& , xx_sihsnow_dummy
& , xx_relaxsst_dummy
& , xx_relaxsss_dummy
& , xx_tbar_mean_dummy
& , xx_tbar_daily_mean_dummy
& , xx_sbar_mean_dummy
& , xx_sbar_daily_mean_dummy
& , xx_ubar_mean_dummy
& , xx_vbar_mean_dummy
& , xx_wbar_mean_dummy
& , xx_psbar_mean_dummy
& , xx_bpbar_mean_dummy
& , xx_taux_mean_dummy
& , xx_tauy_mean_dummy
& , xx_hflux_mean_dummy
& , xx_sflux_mean_dummy
& , xx_sstbar_mean_dummy
& , xx_sssbar_mean_dummy
& , xx_atemp_mean_dummy
& , xx_aqh_mean_dummy
& , xx_precip_mean_dummy
& , xx_swflux_mean_dummy
& , xx_swdown_mean_dummy
& , xx_snowprecip_mean_dummy
& , xx_lwflux_mean_dummy
& , xx_lwdown_mean_dummy
& , xx_evap_mean_dummy
& , xx_apressure_mean_dummy
& , xx_runoff_mean_dummy
& , xx_uwind_mean_dummy
& , xx_vwind_mean_dummy
& , xx_theta_ini_fin_dummy
& , xx_salt_ini_fin_dummy
& , xx_smrareabar_mean_dummy
& , xx_smrsstbar_mean_dummy
& , xx_smrsssbar_mean_dummy
& , xx_gen2d_dummy
& , xx_gen3d_dummy
cHFLUXM_CONTROL
& , xx_hfluxm_dummy
cHFLUXM_CONTROL
Real*8 xx_theta_dummy
Real*8 xx_salt_dummy
Real*8 xx_hflux_dummy
Real*8 xx_sflux_dummy
Real*8 xx_tauu_dummy
Real*8 xx_tauv_dummy
Real*8 xx_atemp_dummy
Real*8 xx_aqh_dummy
Real*8 xx_precip_dummy
Real*8 xx_swflux_dummy
Real*8 xx_swdown_dummy
Real*8 xx_snowprecip_dummy
Real*8 xx_lwflux_dummy
Real*8 xx_lwdown_dummy
Real*8 xx_evap_dummy
Real*8 xx_apressure_dummy
Real*8 xx_runoff_dummy
Real*8 xx_uwind_dummy
Real*8 xx_vwind_dummy
Real*8 xx_obcsn_dummy
Real*8 xx_obcss_dummy
Real*8 xx_obcsw_dummy
Real*8 xx_obcse_dummy
Real*8 xx_diffkr_dummy
Real*8 xx_kapgm_dummy
Real*8 xx_kapredi_dummy
Real*8 xx_tr1_dummy
Real*8 xx_sst_dummy
Real*8 xx_sss_dummy
Real*8 xx_depth_dummy
Real*8 xx_efluxy_dummy
Real*8 xx_efluxp_dummy
Real*8 xx_bottomdrag_dummy
Real*8 xx_edtaux_dummy
Real*8 xx_edtauy_dummy
Real*8 xx_uvel_dummy
Real*8 xx_vvel_dummy
Real*8 xx_etan_dummy
Real*8 xx_siarea_dummy
Real*8 xx_siheff_dummy
Real*8 xx_sihsnow_dummy
Real*8 xx_relaxsst_dummy
Real*8 xx_relaxsss_dummy
Real*8 xx_gen2d_dummy
Real*8 xx_gen3d_dummy
c
Real*8 xx_tbar_mean_dummy
Real*8 xx_tbar_daily_mean_dummy
Real*8 xx_sbar_mean_dummy
Real*8 xx_sbar_daily_mean_dummy
Real*8 xx_ubar_mean_dummy
Real*8 xx_vbar_mean_dummy
Real*8 xx_wbar_mean_dummy
Real*8 xx_psbar_mean_dummy
Real*8 xx_bpbar_mean_dummy
Real*8 xx_hflux_mean_dummy
Real*8 xx_sflux_mean_dummy
Real*8 xx_sstbar_mean_dummy
Real*8 xx_sssbar_mean_dummy
Real*8 xx_taux_mean_dummy
Real*8 xx_tauy_mean_dummy
Real*8 xx_atemp_mean_dummy
Real*8 xx_aqh_mean_dummy
Real*8 xx_precip_mean_dummy
Real*8 xx_swflux_mean_dummy
Real*8 xx_swdown_mean_dummy
Real*8 xx_snowprecip_mean_dummy
Real*8 xx_lwflux_mean_dummy
Real*8 xx_lwdown_mean_dummy
Real*8 xx_evap_mean_dummy
Real*8 xx_apressure_mean_dummy
Real*8 xx_runoff_mean_dummy
Real*8 xx_uwind_mean_dummy
Real*8 xx_vwind_mean_dummy
Real*8 xx_theta_ini_fin_dummy
Real*8 xx_salt_ini_fin_dummy
Real*8 xx_smrareabar_mean_dummy
Real*8 xx_smrsstbar_mean_dummy
Real*8 xx_smrsssbar_mean_dummy
cHFLUXM_CONTROL
Real*8 xx_hfluxm_dummy
cHFLUXM_CONTROL
c
c
c
c
c
common /cost_r/
& fc
Real*8 fc
common /cost_objf/
& objf_atl,
& objf_test,
& objf_tracer,
& objf_entropy,
& objf_t_misfit,
& objf_eflux
cHFLUXM_CONTROL
& ,objf_hflux_tut
& ,objf_temp_tut
cHFLUXM_CONTROL
Real*8 objf_atl (nsx,nsy)
Real*8 objf_test (nsx,nsy)
Real*8 objf_tracer (nsx,nsy)
Real*8 objf_entropy (nsx,nsy)
Real*8 objf_t_misfit (nsx,nsy)
Real*8 objf_eflux (nsx,nsy)
cHFLUXM_CONTROL
Real*8 objf_hflux_tut (nsx,nsy)
Real*8 objf_temp_tut (nsx,nsy)
cHFLUXM_CONTROL
common /cost_param_r/
& lastinterval
Real*8 lastinterval
common /cost_aux_r/
& mult_atl,
& mult_test,
& mult_tracer,
& mult_entropy,
& mult_t_misfit,
& mult_eflux,
& multTheta,
& multSalt,
& multUvel,
& multVvel,
& multEtan
cHFLUXM_CONTROL
& ,mult_hflux_tut
& ,mult_temp_tut
cHFLUXM_CONTROL
Real*8 mult_atl
Real*8 mult_test
Real*8 mult_tracer
Real*8 mult_entropy
Real*8 mult_t_misfit
Real*8 mult_eflux
Real*8 multTheta
Real*8 multSalt
Real*8 multUvel
Real*8 multVvel
Real*8 multEtan
cHFLUXM_CONTROL
Real*8 mult_hflux_tut
Real*8 mult_temp_tut
cHFLUXM_CONTROL
COMMON /COST_MEAN_R/
& cMeanTheta, cMeanUVel, cMeanVVel,
& cMeanThetaUVel, cMeanThetaVVel
Real*8 cMeanTheta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaUVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 cMeanThetaVVel(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myThid
INTEGER myIter
Real*8 myTime
integer iloop
IF (debugMode) CALL DEBUG_ENTER('THE_MAIN_LOOP',myThid)
CADJ INIT dummytape = common, 1
CADJ INIT tapelev_ini_bibj_k = USER
CADJ INIT tapelev_init = USER
c
CADJ INIT tapelev3 = USER
nIter0 = NINT( (startTime-baseTime)/deltaTClock )
ikey_dynamics = 1
IF (debugMode) CALL DEBUG_CALL('INITIALISE_VARIA',myThid)
CALL TIMER_START('INITIALISE_VARIA [THE_MAIN_LOOP]', mythid)
CALL INITIALISE_VARIA( mythid )
CALL TIMER_STOP ('INITIALISE_VARIA [THE_MAIN_LOOP]', mythid)
CALL TIMER_START('MAIN LOOP [THE_MAIN_LOOP]', mythid)
c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
c++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
max_lev4=nTimeSteps/(nchklev_1*nchklev_2*nchklev_3)+1
max_lev3=nTimeSteps/(nchklev_1*nchklev_2)+1
max_lev2=nTimeSteps/nchklev_1+1
do ilev_3 = 1,nchklev_3
if(ilev_3.le.max_lev3) then
CALL AUTODIFF_STORE( myThid )
c
c
c
c
CADJ STORE StoreDynVars2D = tapelev3, key = ilev_3
c
c
c
CADJ STORE StoreDynVars3D = tapelev3, key = ilev_3
c
cnewCADJ STORE ivdconvcount = tapelevx, key = ilev_x
CADJ STORE uveld = tapelev3, key = ilev_3
CADJ STORE vveld = tapelev3, key = ilev_3
CADJ STORE etanm1 = tapelev3, key = ilev_3
CADJ STORE unm1 = tapelev3, key = ilev_3
CADJ STORE vnm1 = tapelev3, key = ilev_3
CADJ STORE cMeanTheta = tapelev3, key = ilev_3
CADJ STORE cMeanUVel = tapelev3, key = ilev_3
CADJ STORE cMeanVVel = tapelev3, key = ilev_3
CADJ STORE cMeanThetaUVel = tapelev3, key = ilev_3
CADJ STORE cMeanThetaVVel = tapelev3, key = ilev_3
CADJ STORE qnetm = tapelev3, key = ilev_3
CALL AUTODIFF_RESTORE( myThid )
CADJ INIT tapelev2 = USER
do ilev_2 = 1,nchklev_2
if(ilev_2.le.max_lev2) then
CALL AUTODIFF_STORE( myThid )
c
c
c
c
CADJ STORE StoreDynVars2D = tapelev2, key = ilev_2
c
c
c
CADJ STORE StoreDynVars3D = tapelev2, key = ilev_2
c
cnewCADJ STORE ivdconvcount = tapelevx, key = ilev_x
CADJ STORE uveld = tapelev2, key = ilev_2
CADJ STORE vveld = tapelev2, key = ilev_2
CADJ STORE etanm1 = tapelev2, key = ilev_2
CADJ STORE unm1 = tapelev2, key = ilev_2
CADJ STORE vnm1 = tapelev2, key = ilev_2
CADJ STORE cMeanTheta = tapelev2, key = ilev_2
CADJ STORE cMeanUVel = tapelev2, key = ilev_2
CADJ STORE cMeanVVel = tapelev2, key = ilev_2
CADJ STORE cMeanThetaUVel = tapelev2, key = ilev_2
CADJ STORE cMeanThetaVVel = tapelev2, key = ilev_2
CADJ STORE qnetm = tapelev2, key = ilev_2
CALL AUTODIFF_RESTORE( myThid )
CADJ INIT comlev1 = COMMON,nchklev_1
CADJ INIT comlev1_bibj = COMMON,nchklev_1*nsx*nsy*nthreads_chkpt
CADJ INIT comlev1_bibj_k = COMMON,nchklev_1*nsx*nsy*nr*nthreads_chkpt
CADJ INIT comlev1_gmredi_k_gad
CADJ & = COMMON,nchklev_1*nsx*nsy*nr*nthreads_chkpt*maxpass
CADJ INIT comlev1_bibj_k_gad = COMMON,
CADJ & nchklev_1*nsx*nsy*nr*nthreads_chkpt*maxpass
CADJ INIT comlev1_bibj_k_gad_pass = COMMON,
CADJ & nchklev_1*nsx*nsy*nr*nthreads_chkpt*maxpass*maxpass
CADJ INIT comlev1_mom_ijk_loop
CADJ & = COMMON,nchklev_1*
CADJ & (snx+2*olx)*nsx*(sny+2*oly)*nsy*nr*nthreads_chkpt
do ilev_1 = 1,nchklev_1
iloop = (ilev_2 - 1)*nchklev_1 + ilev_1
& + (ilev_3 - 1)*nchklev_2*nchklev_1
if ( iloop .le. nTimeSteps ) then
nIter0 = NINT( (startTime-baseTime)/deltaTClock )
ikey_dynamics = ilev_1
IF (debugMode) CALL DEBUG_CALL('FORWARD_STEP',myThid)
CALL TIMER_START('FORWARD_STEP [THE_MAIN_LOOP]',mythid)
CALL FORWARD_STEP( iloop, mytime, myiter, mythid )
CALL TIMER_STOP ('FORWARD_STEP [THE_MAIN_LOOP]',mythid)
endif
enddo
endif
enddo
endif
enddo
CALL TIMER_START('COST_FINAL [ADJOINT SPIN-DOWN]', mythid)
CALL COST_FINAL ( mythid )
CALL TIMER_STOP ('COST_FINAL [ADJOINT SPIN-DOWN]', mythid)
CALL BARRIER(myThid)
CALL TIMER_STOP ('MAIN LOOP [THE_MAIN_LOOP]', mythid)
IF (debugMode) CALL DEBUG_LEAVE('THE_MAIN_LOOP',myThid)
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
C
C
C
C
C
SUBROUTINE THERMODYNAMICS(myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
INTEGER maxNoChkptLev
PARAMETER ( maxNoChkptLev = 2 )
COMMON / RESTART_I /
& nCheckLev,
& tempStartAB, saltStartAB,
& mom_StartAB, nHydStartAB,
& dPhiNHstatus
INTEGER nCheckLev
INTEGER tempStartAB
INTEGER saltStartAB
INTEGER mom_StartAB
INTEGER nHydStartAB
INTEGER dPhiNHstatus
COMMON / RESTART_C /
& checkPtSuff
CHARACTER*(5) checkPtSuff(maxNoChkptLev)
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
INTEGER ENUM_UPWIND_1RST
PARAMETER(ENUM_UPWIND_1RST=1)
INTEGER ENUM_CENTERED_2ND
PARAMETER(ENUM_CENTERED_2ND=2)
INTEGER ENUM_UPWIND_3RD
PARAMETER(ENUM_UPWIND_3RD=3)
INTEGER ENUM_CENTERED_4TH
PARAMETER(ENUM_CENTERED_4TH=4)
INTEGER ENUM_DST2
PARAMETER(ENUM_DST2=20)
INTEGER ENUM_FLUX_LIMIT
PARAMETER(ENUM_FLUX_LIMIT=77)
INTEGER ENUM_DST3
PARAMETER(ENUM_DST3=30)
INTEGER ENUM_DST3_FLUX_LIMIT
PARAMETER(ENUM_DST3_FLUX_LIMIT=33)
INTEGER ENUM_OS7MP
PARAMETER(ENUM_OS7MP=7)
INTEGER ENUM_SOM_PRATHER
PARAMETER(ENUM_SOM_PRATHER=80)
INTEGER ENUM_SOM_LIMITER
PARAMETER(ENUM_SOM_LIMITER=81)
INTEGER nSOM
PARAMETER( nSOM = 3+6 )
Real*8 oneSixth
PARAMETER(oneSixth=1.d0/6.d0)
INTEGER iMinAdvR, iMaxAdvR, jMinAdvR, jMaxAdvR
PARAMETER ( iMinAdvR = 1 , iMaxAdvR = sNx )
PARAMETER ( jMinAdvR = 1 , jMaxAdvR = sNy )
c
INTEGER GAD_TEMPERATURE
PARAMETER(GAD_TEMPERATURE=1)
INTEGER GAD_SALINITY
PARAMETER(GAD_SALINITY=2)
INTEGER GAD_TR1
PARAMETER(GAD_TR1=3)
CHARACTER*2 somSfx(nSOM)
COMMON /GAD_PARM_C/
& somSfx
LOGICAL tempSOM_Advection
LOGICAL saltSOM_Advection
LOGICAL tempMultiDimAdvec
LOGICAL saltMultiDimAdvec
LOGICAL AdamsBashforthGt
LOGICAL AdamsBashforthGs
LOGICAL AdamsBashforth_T
LOGICAL AdamsBashforth_S
COMMON /GAD_PARM_L/
& tempSOM_Advection, saltSOM_Advection,
& tempMultiDimAdvec, saltMultiDimAdvec,
& AdamsBashforthGt, AdamsBashforthGs,
& AdamsBashforth_T, AdamsBashforth_S
Real*8 SmolarkiewiczMaxFrac
COMMON /GAD_SMOL/ SmolarkiewiczMaxFrac
COMMON /TAVE_TIME/ timeAve_half, timeAve_full
Real*8 timeAve_half(nSx,nSy)
Real*8 timeAve_full(nSx,nSy)
COMMON /TAVE_STATEVARS/
& uFluxtave,vFluxtave,tFluxtave,sFluxtave
& ,etatave,uVeltave,vVeltave,wVeltave
& ,thetatave,salttave,phiHydLowtave
& ,UTtave,VTtave,WTtave,UStave,VStave,WStave
& ,Eta2tave,TTtave,UUtave,VVtave,UVtave
& ,TdiffRtave
& ,uZetatave, vZetatave
& ,phiHydtave
& ,phiHydLow2Tave
& ,ConvectCountTave
Real*8 uFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 vFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sFluxtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 etatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVeltave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 thetatave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salttave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLowtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 UTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 WStave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 eta2Tave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 TTtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UUtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 VVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 UVtave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 TdiffRtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 uZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vZetatave (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydtave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 phiHydLow2Tave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 ConvectCountTave(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SItoBar, SItodBar
PARAMETER ( SItoBar = 1.D-05 )
PARAMETER ( SItodBar = 1.D-04 )
COMMON /PARM_EOS_LIN/ tAlpha,sBeta,equationOfState
Real*8 tAlpha
Real*8 sBeta
character*(6) equationOfState
COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS
Real*8 eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1)
Real*8 eosJMDCFw(6), eosJMDCSw(9)
Real*8 eosJMDCKFw(5), eosJMDCKSw(7), eosJMDCKP(14)
COMMON /PARM_EOS_JMD95/
& eosJMDCFw, eosJMDCSw, eosJMDCKFw, eosJMDCKSw, eosJMDCKP
Real*8 eosMDJWFnum(0:11), eosMDJWFden(0:12)
COMMON /PARM_EOS_MDJWF/
& eosMDJWFnum, eosMDJWFden
Real*8 op5
Real*8 op25
PARAMETER( op5 = 0.5 D 0 )
PARAMETER( op25 = 0.25 D 0 )
LOGICAL GM_AdvForm
LOGICAL GM_AdvSeparate
LOGICAL GM_ExtraDiag
LOGICAL GM_InMomAsStress
LOGICAL GM_MNC
LOGICAL GM_MDSIO
COMMON /GM_PARAMS_L/
& GM_AdvForm, GM_AdvSeparate,
& GM_ExtraDiag, GM_MNC, GM_MDSIO,
& GM_InMomAsStress
CHARACTER*(40) GM_taper_scheme
COMMON /GM_PARAMS_C/
& GM_taper_scheme
Real*8 GM_isopycK
Real*8 GM_background_K
Real*8 GM_maxSlope
Real*8 GM_Kmin_horiz
Real*8 GM_Small_Number
Real*8 GM_slopeSqCutoff
Real*8 GM_Visbeck_alpha
Real*8 GM_Visbeck_length
Real*8 GM_Visbeck_depth
Real*8 GM_Visbeck_minDepth
Real*8 GM_Visbeck_maxSlope
Real*8 GM_Visbeck_minVal_K
Real*8 GM_Visbeck_maxVal_K
Real*8 GM_facTrL2dz
Real*8 GM_facTrL2ML
Real*8 GM_maxTransLay
Real*8 GM_Scrit
Real*8 GM_Sd
COMMON /GM_PARAMS_R/
& GM_isopycK, GM_background_K,
& GM_maxSlope,
& GM_Kmin_horiz,
& GM_Small_Number, GM_slopeSqCutoff,
& GM_Visbeck_alpha, GM_Visbeck_length,
& GM_Visbeck_depth,
& GM_Visbeck_minDepth, GM_Visbeck_maxSlope,
& GM_Visbeck_minVal_K, GM_Visbeck_maxVal_K,
& GM_facTrL2dz, GM_facTrL2ML, GM_maxTransLay,
& GM_Scrit, GM_Sd
Real*8 GM_rMaxSlope
Real*8 GM_skewflx
Real*8 GM_advect
COMMON /GM_DERIVED_PAR/
& GM_rMaxSlope,
& GM_skewflx, GM_advect
Real*8 Kwx(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kwz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_Wtensor/ Kwx,Kwy,Kwz
Real*8 Kux(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvy(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_HorTensor/ Kux,Kvy
Real*8 Kuz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 Kvz(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /GM_UVtensor/ Kuz,Kvz
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 wFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 uTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 vTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTrans (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 rTransKp1(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 maskUp (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
Real*8 fVerT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 fVerS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,2)
Real*8 kappaRT (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 kappaRS (1-Olx:sNx+Olx,1-Oly:sNy+Oly)
Real*8 kappaRk (1-Olx:sNx+Olx,1-Oly:sNy+Oly,Nr)
INTEGER iMin, iMax
INTEGER jMin, jMax
INTEGER bi, bj
INTEGER i, j
INTEGER k, km1, kup, kDown
LOGICAL useVariableK
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_ENTER('THERMODYNAMICS',myThid)
ikey = 1
itdkey = 1
CHPF$ INDEPENDENT
TsurfCor = 0.d0
SsurfCor = 0.d0
IF (linFSConserveTr) THEN
CADJ STORE theta,salt,wvel = comlev1, key = ikey_dynamics, byte=isbyte
CALL CALC_WSURF_TR(theta,salt,wVel,
& myTime,myIter,myThid)
ENDIF
DO bj=myByLo(myThid),myByHi(myThid)
CHPF$ INDEPENDENT, NEW (rTrans,fVerT,fVerS
CHPF$& ,utrans,vtrans,xA,yA
CHPF$& ,kappaRT,kappaRS
CHPF$& )
DO bi=myBxLo(myThid),myBxHi(myThid)
act1 = bi - myBxLo(myThid)
max1 = myBxHi(myThid) - myBxLo(myThid) + 1
act2 = bj - myByLo(myThid)
max2 = myByHi(myThid) - myByLo(myThid) + 1
act3 = myThid - 1
max3 = nTx*nTy
act4 = ikey_dynamics - 1
itdkey = (act1 + 1) + act2*max1
& + act3*max1*max2
& + act4*max1*max2*max3
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
xA(i,j) = 0.d0
yA(i,j) = 0.d0
uTrans(i,j) = 0.d0
vTrans(i,j) = 0.d0
rTrans (i,j) = 0.d0
rTransKp1(i,j) = 0.d0
fVerT (i,j,1) = 0.d0
fVerT (i,j,2) = 0.d0
fVerS (i,j,1) = 0.d0
fVerS (i,j,2) = 0.d0
kappaRT(i,j) = 0.d0
kappaRS(i,j) = 0.d0
ENDDO
ENDDO
DO k=1,Nr
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
kappaRk(i,j,k) = 0.d0
gT(i,j,k,bi,bj) = 0.d0
gS(i,j,k,bi,bj) = 0.d0
ENDDO
ENDDO
ENDDO
CADJ STORE wvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
CADJ STORE theta(:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
CADJ STORE salt (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
CADJ STORE uvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
CADJ STORE vvel (:,:,:,bi,bj) = comlev1_bibj, key=itdkey, byte=isbyte
C
IF (tempMultiDimAdvec) THEN
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('GAD_ADVECTION',myThid)
CALL GAD_ADVECTION(
I tempImplVertAdv, tempAdvScheme, tempVertAdvScheme,
I GAD_TEMPERATURE, dTtracerLev,
I uVel, vVel, wVel, theta,
O gT,
I bi,bj,myTime,myIter,myThid)
ENDIF
IF (saltMultiDimAdvec) THEN
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_CALL('GAD_ADVECTION',myThid)
CALL GAD_ADVECTION(
I saltImplVertAdv, saltAdvScheme, saltVertAdvScheme,
I GAD_SALINITY, dTtracerLev,
I uVel, vVel, wVel, salt,
O gS,
I bi,bj,myTime,myIter,myThid)
ENDIF
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_MSG('ENTERING DOWNWARD K LOOP',myThid)
DO k=Nr,1,-1
C? Patrick Is this formula correct?
kkey = (itdkey-1)*Nr + k
km1 = MAX(1,k-1)
kup = 1+MOD(k+1,2)
kDown= 1+MOD(k,2)
iMin = 1-OLx
iMax = sNx+OLx
jMin = 1-OLy
jMax = sNy+OLy
IF (k.EQ.Nr) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rTransKp1(i,j) = 0.d0
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
rTransKp1(i,j) = rTrans(i,j)
ENDDO
ENDDO
ENDIF
CADJ STORE rTransKp1(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CALL CALC_COMMON_FACTORS (
I uVel, vVel,
O uFld, vFld, uTrans, vTrans, xA, yA,
I k,bi,bj, myThid )
IF (k.EQ.1) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wFld(i,j) = 0.d0
maskUp(i,j) = 0.d0
rTrans(i,j) = 0.d0
ENDDO
ENDDO
ELSE
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
wFld(i,j) = wVel(i,j,k,bi,bj)
maskUp(i,j) = maskC(i,j,k-1,bi,bj)*maskC(i,j,k,bi,bj)
rTrans(i,j) = wFld(i,j)*rA(i,j,bi,bj)*maskUp(i,j)
& *deepFac2F(k)*rhoFacF(k)
ENDDO
ENDDO
ENDIF
IF (useGMRedi) THEN
CALL GMREDI_CALC_UVFLOW(
U uFld, vFld, uTrans, vTrans,
I k, bi, bj, myThid )
IF (K.GE.2) THEN
CALL GMREDI_CALC_WFLOW(
U wFld, rTrans,
I k, bi, bj, myThid )
ENDIF
ENDIF
CADJ STORE rTrans(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE wfld(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
IF ( .NOT.implicitDiffusion ) THEN
CALL CALC_DIFFUSIVITY(
I bi,bj,iMin,iMax,jMin,jMax,k,
I maskUp,
O kappaRT,kappaRS,
I myThid)
ENDIF
CADJ STORE kappaRT(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
CADJ STORE kappaRS(:,:) = comlev1_bibj_k, key=kkey, byte=isbyte
iMin = 1-OLx+2
iMax = sNx+OLx-1
jMin = 1-OLy+2
jMax = sNy+OLy-1
C
C
IF ( tempStepping ) THEN
CADJ STORE gTnm1(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
CALL CALC_GT(
I bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,
I xA, yA, maskUp, uFld, vFld, wFld,
I uTrans, vTrans, rTrans, rTransKp1,
I kappaRT,
U fVerT,
I myTime,myIter,myThid)
CALL TIMESTEP_TRACER(
I bi,bj,iMin,iMax,jMin,jMax,k,tempAdvScheme,dTtracerLev(k),
I theta,
U gT,
I myIter, myThid)
ENDIF
IF ( saltStepping ) THEN
CADJ STORE gSnm1(:,:,k,bi,bj) = comlev1_bibj_k, key=kkey, byte=isbyte
CALL CALC_GS(
I bi,bj,iMin,iMax,jMin,jMax, k,km1,kup,kDown,
I xA, yA, maskUp, uFld, vFld, wFld,
I uTrans, vTrans, rTrans, rTransKp1,
I kappaRS,
U fVerS,
I myTime,myIter,myThid)
CALL TIMESTEP_TRACER(
I bi,bj,iMin,iMax,jMin,jMax,k,saltAdvScheme,dTtracerLev(k),
I salt,
U gS,
I myIter, myThid)
ENDIF
IF ( useOldFreezing .AND. .NOT. useSEAICE
& .AND. .NOT.(useThSIce.AND.k.EQ.1) ) THEN
CADJ STORE gT(:,:,k,bi,bj) = comlev1_bibj_k
CADJ & , key = kkey, byte = isbyte
CALL FREEZE( bi, bj, iMin, iMax, jMin, jMax, k, myThid )
ENDIF
ENDDO
iMin = 1
iMax = sNx
jMin = 1
jMax = sNy
IF ( tempStepping .AND. implicitDiffusion ) THEN
CALL CALC_3D_DIFFUSIVITY(
I bi,bj,iMin,iMax,jMin,jMax,
I GAD_TEMPERATURE, useGMredi, useKPP,
O kappaRk,
I myThid)
ENDIF
IF ( tempStepping .AND. implicitDiffusion ) THEN
CADJ STORE kappaRk(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
CADJ STORE gT(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
CALL IMPLDIFF(
I bi, bj, iMin, iMax, jMin, jMax,
I GAD_TEMPERATURE, kappaRk, recip_hFacC,
U gT,
I myThid )
ENDIF
useVariableK = useKPP .OR. usePP81 .OR. useMY82 .OR. useGGL90
& .OR. useGMredi .OR. ivdc_kappa.NE.0.
IF (taveFreq.GT.0. .AND. useVariableK ) THEN
IF (implicitDiffusion) THEN
CALL TIMEAVE_CUMUL_DIF_1T(TdiffRtave, gT, kappaRk,
I Nr, 3, deltaTclock, bi, bj, myThid)
ENDIF
ENDIF
IF ( saltStepping .AND. implicitDiffusion ) THEN
CALL CALC_3D_DIFFUSIVITY(
I bi,bj,iMin,iMax,jMin,jMax,
I GAD_SALINITY, useGMredi, useKPP,
O kappaRk,
I myThid)
ENDIF
IF ( saltStepping .AND. implicitDiffusion ) THEN
CADJ STORE kappaRk(:,:,:) = comlev1_bibj , key=itdkey, byte=isbyte
CADJ STORE gS(:,:,:,bi,bj) = comlev1_bibj , key=itdkey, byte=isbyte
CALL IMPLDIFF(
I bi, bj, iMin, iMax, jMin, jMax,
I GAD_SALINITY, kappaRk, recip_hFacC,
U gS,
I myThid )
ENDIF
ENDDO
ENDDO
If (debugMode) THEN
CALL DEBUG_STATS_RL(Nr,uVel,'Uvel (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,vVel,'Vvel (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,wVel,'Wvel (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,theta,'Theta (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,salt,'Salt (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gT,'Gt (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gS,'Gs (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gtNm1,'GtNm1 (THERMODYNAMICS)',myThid)
CALL DEBUG_STATS_RL(Nr,gsNm1,'GsNm1 (THERMODYNAMICS)',myThid)
ENDIF
IF ( debugLevel .GE. debLevB )
& CALL DEBUG_LEAVE('THERMODYNAMICS',myThid)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE TIMESTEP_TRACER(
I bi, bj, iMin, iMax, jMin, jMax, K,
I advection_scheme, deltaTloc,
I tracer, gTracer,
I myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
INTEGER bi,bj,iMin,iMax,jMin,jMax,K
INTEGER advection_scheme
Real*8 deltaTloc
Real*8 tracer (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
INTEGER myIter, myThid
INTEGER i,j
DO j=jMin,jMax
DO i=iMin,iMax
gTracer(i,j,k,bi,bj)=tracer(i,j,k,bi,bj)
& +deltaTloc*gTracer(i,j,k,bi,bj)
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE TRACERS_CORRECTION_STEP(myTime, myIter, myThid)
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER iMin,iMax
INTEGER jMin,jMax
INTEGER bi,bj
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
IF (tempStepping)
& CALL CYCLE_TRACER(
I bi,bj,
U theta,gT,
I myTime,myIter,myThid )
IF (saltStepping)
& CALL CYCLE_TRACER(
I bi,bj,
U salt,gS,
I myTime,myIter,myThid )
ENDDO
ENDDO
C
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
iMin = 1
iMax = sNx
jMin = 1
jMax = sNy
IF ( cAdjFreq .NE. 0. ) THEN
CALL CONVECTIVE_ADJUSTMENT(
I bi, bj, myTime, myIter, myThid )
ENDIF
ENDDO
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE UPDATE_CG2D( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /CG2D_I_L/ cg2dNormaliseRHS
LOGICAL cg2dNormaliseRHS
COMMON /CG2D_I_R/
& aW2d, aS2d, aC2d,
& pW, pS, pC,
& cg2dNorm, cg2dTolerance
Real*8 aW2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 aS2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 aC2d (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 cg2dNorm, cg2dTolerance
COMMON /CG2D_I_WK_R/
& cg2d_q, cg2d_r, cg2d_s
Real*8 cg2d_q(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
Real*8 cg2d_r(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
Real*8 cg2d_s(1-1:sNx+1,1-1:sNy+1,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE UPDATE_ETAH( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
COMMON /DYNVARS_R/
& etaN,
& uVel,vVel,wVel,theta,salt,
& gU, gV, gT, gS,
& guNm1,gvNm1,gtNm1,gsNm1
Real*8 etaN (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 uVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 vVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 wVel (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 theta(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 salt (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gU(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gV(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gT(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 guNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gvNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gtNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 gsNm1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
COMMON /DYNVARS_R_2/
& etaH
Real*8 etaH (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /DYNVARS_DIAG/
& phiHydLow, totPhiHyd,
& rhoInSitu,
& hMixLayer, IVDConvCount
Real*8 phiHydLow(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 totPhiHyd(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 rhoInSitu(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hMixLayer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 IVDConvCount(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
C
C
C
C
C
C
C
C
C
COMMON /FFIELDS_fu/ fu
COMMON /FFIELDS_fv/ fv
COMMON /FFIELDS_Qnet/ Qnet
COMMON /FFIELDS_Qsw/ Qsw
COMMON /FFIELDS_dQdT/ dQdT
COMMON /FFIELDS_EmPmR/ EmPmR
COMMON /FFIELDS_saltFlux/ saltFlux
COMMON /FFIELDS_SST/ SST
COMMON /FFIELDS_SSS/ SSS
COMMON /FFIELDS_lambdaThetaClimRelax/ lambdaThetaClimRelax
COMMON /FFIELDS_lambdaSaltClimRelax/ lambdaSaltClimRelax
COMMON /FFIELDS_pLoad/ pLoad
COMMON /FFIELDS_sIceLoad/ sIceLoad
Real*8 fu (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fv (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qsw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dQdT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaThetaClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 lambdaSaltClimRelax(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 pLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 sIceLoad (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /Mean_qnet/ Qnetm
Real*8 Qnetm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /TDFIELDS/
& taux0, tauy0, Qnet0, EmPmR0, SST0, SSS0,
& taux1, tauy1, Qnet1, EmPmR1, SST1, SSS1,
& saltFlux0, saltFlux1
Real*8 taux0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux0(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS0 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 taux1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tauy1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Qnet1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 EmPmR1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 saltFlux1(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SST1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 SSS1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
C
COMMON /SURFACE_FORCING/
& surfaceForcingU,
& surfaceForcingV,
& surfaceForcingT,
& surfaceForcingS,
& surfaceForcingTice
Real*8 surfaceForcingU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingT (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 surfaceForcingTice(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
INTEGER i,j,bi,bj
DO bj=myByLo(myThid),myByHi(myThid)
DO bi=myBxLo(myThid),myBxHi(myThid)
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
etaHnm1(i,j,bi,bj) = etaH(i,j,bi,bj)
ENDDO
ENDDO
IF (implicDiv2Dflow.EQ. 1.d0) THEN
DO j=1-Oly,sNy+Oly
DO i=1-Olx,sNx+Olx
etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
ENDDO
ENDDO
ELSE
DO j=1,sNy
DO i=1,sNx
etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
& + (1. - implicDiv2Dflow)*dEtaHdt(i,j,bi,bj)
& *deltaTfreesurf
ENDDO
ENDDO
ENDIF
ENDDO
ENDDO
IF (implicDiv2Dflow .NE. 1.d0 .OR. useOBCS )
& CALL EXCH_XY_RL( etaH, myThid )
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE UPDATE_MASKS_ETC( myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
c
c
c
c
character*(5) lsoptversion
parameter ( lsoptversion = '2.1.0' )
character*(5) offlineversion
parameter ( offlineversion = '0.1.1' )
c
c
common /optiparm_i/
& optimcycle,
& nvars,
& numiter,
& nfunc,
& iprint,
& nupdate
integer optimcycle
integer nvars
integer numiter
integer nfunc
integer iprint
integer nupdate
common /optiparm_r/
& fmin,
& epsf,
& epsx,
& epsg,
& eps
Real*8 epsf
Real*8 epsx
Real*8 fmin
Real*8 epsg
Real*8 eps
common /optiparm_l/
& nondimcontrol
logical nondimcontrol
common /optiparm_c/
& copt
character*( 3) copt
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE UPDATE_SURF_DR( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
Real*8 myTime
INTEGER myIter
INTEGER myThid
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE SWFRAC(
I imax, fact,
U swdk,
I myTime, myIter, myThid )
IMPLICIT NONE
INTEGER imax
Real*8 fact
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 swdk(imax)
INTEGER nwtype , jwtype
PARAMETER(nwtype=5)
Real*8 facz
Real*8 rfac(nwtype),a1(nwtype),a2(nwtype)
INTEGER i
DATA rfac / 0.58d0, 0.62d0, 0.67d0, 0.77d0, 0.78d0/
DATA a1 / 0.35d0, 0.6d0, 1.0d0, 1.5d0, 1.4d0/
DATA a2 / 23.0d0, 20.0d0, 17.0d0, 14.0d0, 7.9d0/
jwtype=2
DO i = 1,imax
facz = fact*swdk(i)
IF ( facz .LT. -200.d0 ) THEN
swdk(i) = 0.d0
ELSE
swdk(i) = rfac(jwtype) * exp( facz/a1(jwtype) )
& + (1.d0 - rfac(jwtype)) * exp( facz/a2(jwtype) )
ENDIF
ENDDO
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE CALC_R_STAR( etaFld,
I myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 myTime
INTEGER myIter
INTEGER myThid
Real*8 etaFld(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
RETURN
END
C
C
C
C
C
C
C
C
C
C
CPH >>>>>> THERE ARE NO MORE CAL OPTIONS TO BE SET <<<<<<
SUBROUTINE UPDATE_R_STAR( myTime, myIter, myThid )
IMPLICIT NONE
C
INTEGER sNx
INTEGER sNy
INTEGER OLx
INTEGER OLy
INTEGER nSx
INTEGER nSy
INTEGER nPx
INTEGER nPy
INTEGER Nx
INTEGER Ny
INTEGER Nr
PARAMETER (
& sNx = 45,
& sNy = 20,
& OLx = 2,
& OLy = 2,
& nSx = 2,
& nSy = 2,
& nPx = 1,
& nPy = 1,
& Nx = sNx*nSx*nPx,
& Ny = sNy*nSy*nPy,
& Nr = 15)
INTEGER MAX_OLX
INTEGER MAX_OLY
PARAMETER ( MAX_OLX = OLx,
& MAX_OLY = OLy )
integer nobcs
parameter ( nobcs = 4 )
C
INTEGER MAX_LEN_MBUF
PARAMETER ( MAX_LEN_MBUF = 512 )
INTEGER MAX_LEN_FNAM
PARAMETER ( MAX_LEN_FNAM = 512 )
INTEGER MAX_LEN_PREC
PARAMETER ( MAX_LEN_PREC = 200 )
INTEGER MAX_NO_THREADS
PARAMETER ( MAX_NO_THREADS = 4 )
INTEGER MAX_NO_PROCS
PARAMETER ( MAX_NO_PROCS = 4096 )
INTEGER MAX_NO_BARRIERS
PARAMETER ( MAX_NO_BARRIERS = 1 )
INTEGER cacheLineSize
INTEGER lShare1
INTEGER lShare4
INTEGER lShare8
PARAMETER ( cacheLineSize = 256 )
PARAMETER ( lShare1 = cacheLineSize )
PARAMETER ( lShare4 = cacheLineSize/4 )
PARAMETER ( lShare8 = cacheLineSize/8 )
INTEGER MAX_VGS
PARAMETER ( MAX_VGS = 8192 )
INTEGER precFloat32
PARAMETER ( precFloat32 = 32 )
INTEGER precFloat64
PARAMETER ( precFloat64 = 64 )
Real*8 UNSET_FLOAT8
PARAMETER ( UNSET_FLOAT8 = 1.234567D5 )
Real*4 UNSET_FLOAT4
PARAMETER ( UNSET_FLOAT4 = 1.234567E5 )
Real*8 UNSET_RL
PARAMETER ( UNSET_RL = 1.234567D5 )
Real*8 UNSET_RS
PARAMETER ( UNSET_RS = 1.234567D5 )
INTEGER UNSET_I
PARAMETER ( UNSET_I = 123456789 )
INTEGER debLevZero
PARAMETER ( debLevZero=0 )
INTEGER debLevA
PARAMETER ( debLevA=1 )
INTEGER debLevB
PARAMETER ( debLevB=2 )
CHARACTER*(*) SQUEEZE_RIGHT
PARAMETER ( SQUEEZE_RIGHT = 'R' )
CHARACTER*(*) SQUEEZE_LEFT
PARAMETER ( SQUEEZE_LEFT = 'L' )
CHARACTER*(*) SQUEEZE_BOTH
PARAMETER ( SQUEEZE_BOTH = 'B' )
CHARACTER*(*) PRINT_MAP_XY
PARAMETER ( PRINT_MAP_XY = 'XY' )
CHARACTER*(*) PRINT_MAP_XZ
PARAMETER ( PRINT_MAP_XZ = 'XZ' )
CHARACTER*(*) PRINT_MAP_YZ
PARAMETER ( PRINT_MAP_YZ = 'YZ' )
CHARACTER*(*) commentCharacter
PARAMETER ( commentCharacter = '#' )
INTEGER INDEX_I
INTEGER INDEX_J
INTEGER INDEX_K
INTEGER INDEX_NONE
PARAMETER ( INDEX_I = 1,
& INDEX_J = 2,
& INDEX_K = 3,
& INDEX_NONE = 4 )
INTEGER EXCH_IGNORE_CORNERS
INTEGER EXCH_UPDATE_CORNERS
PARAMETER ( EXCH_IGNORE_CORNERS = 0,
& EXCH_UPDATE_CORNERS = 1 )
INTEGER FORWARD_SIMULATION
INTEGER REVERSE_SIMULATION
INTEGER TANGENT_SIMULATION
PARAMETER ( FORWARD_SIMULATION = 0,
& REVERSE_SIMULATION = 1,
& TANGENT_SIMULATION = 2 )
COMMON /EEPARAMS_L/
& eeBootError, fatalError, eeEndError,
& useSingleCpuIO, printMapIncludesZeros,
& useCubedSphereExchange, useCoupler,
& useNEST_PARENT, useNEST_CHILD, useOASIS,
& useSETRLSTK, useSIGREG
LOGICAL eeBootError
LOGICAL eeEndError
LOGICAL fatalError
LOGICAL useSingleCpuIO
LOGICAL printMapIncludesZeros
LOGICAL useCubedSphereExchange
LOGICAL useCoupler
LOGICAL useNEST_PARENT
LOGICAL useNEST_CHILD
LOGICAL useOASIS
LOGICAL useSETRLSTK
LOGICAL useSIGREG
COMMON /EEPARAMS_I/
& errorMessageUnit, standardMessageUnit, maxLengthPrt1D,
& scrUnit1, scrUnit2, eeDataUnit, modelDataUnit,
& numberOfProcs, pidIO, myProcId,
& myPx, myPy, myXGlobalLo, myYGlobalLo, nThreads,
& myBxLo, myBxHi, myByLo, myByHi,
& nTx, nTy, ioErrorCount
INTEGER errorMessageUnit
INTEGER standardMessageUnit
INTEGER maxLengthPrt1D
INTEGER scrUnit1
INTEGER scrUnit2
INTEGER eeDataUnit
INTEGER modelDataUnit
INTEGER ioErrorCount(MAX_NO_THREADS)
INTEGER myBxLo(MAX_NO_THREADS)
INTEGER myBxHi(MAX_NO_THREADS)
INTEGER myByLo(MAX_NO_THREADS)
INTEGER myByHi(MAX_NO_THREADS)
INTEGER myProcId
INTEGER myPx
INTEGER myPy
INTEGER myXGlobalLo
INTEGER myYGlobalLo
INTEGER nThreads
INTEGER nTx
INTEGER nTy
INTEGER numberOfProcs
INTEGER pidIO
C
C
C
Real*8 PI
PARAMETER ( PI = 3.14159265358979323844d0 )
Real*8 deg2rad
PARAMETER ( deg2rad = 2.d0*PI/360.d0 )
COMMON /PARM_C/
& buoyancyRelation, eosType,
& pickupSuff, mdsioLocalDir,
& tRefFile, sRefFile, rhoRefFile,
& delRFile, delRcFile, hybSigmFile,
& delXFile, delYFile, horizGridFile,
& bathyFile, topoFile,
& viscAhDfile, viscAhZfile,
& viscA4Dfile, viscA4Zfile,
& hydrogThetaFile, hydrogSaltFile, diffKrFile,
& zonalWindFile, meridWindFile, thetaClimFile,
& saltClimFile,
& EmPmRfile, saltFluxFile,
& surfQfile, surfQnetFile, surfQswFile,
& lambdaThetaFile, lambdaSaltFile,
& uVelInitFile, vVelInitFile, pSurfInitFile,
& dQdTfile, ploadFile,
& eddyPsiXFile, eddyPsiYFile,
& the_run_name
CHARACTER*(MAX_LEN_FNAM) buoyancyRelation
CHARACTER*(6) eosType
CHARACTER*(10) pickupSuff
CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir
CHARACTER*(MAX_LEN_FNAM) tRefFile
CHARACTER*(MAX_LEN_FNAM) sRefFile
CHARACTER*(MAX_LEN_FNAM) rhoRefFile
CHARACTER*(MAX_LEN_FNAM) delRFile
CHARACTER*(MAX_LEN_FNAM) delRcFile
CHARACTER*(MAX_LEN_FNAM) hybSigmFile
CHARACTER*(MAX_LEN_FNAM) delXFile
CHARACTER*(MAX_LEN_FNAM) delYFile
CHARACTER*(MAX_LEN_FNAM) horizGridFile
CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile
CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile, hydrogSaltFile
CHARACTER*(MAX_LEN_FNAM) diffKrFile
CHARACTER*(MAX_LEN_FNAM) viscAhDfile
CHARACTER*(MAX_LEN_FNAM) viscAhZfile
CHARACTER*(MAX_LEN_FNAM) viscA4Dfile
CHARACTER*(MAX_LEN_FNAM) viscA4Zfile
CHARACTER*(MAX_LEN_FNAM) zonalWindFile
CHARACTER*(MAX_LEN_FNAM) meridWindFile
CHARACTER*(MAX_LEN_FNAM) thetaClimFile
CHARACTER*(MAX_LEN_FNAM) saltClimFile
CHARACTER*(MAX_LEN_FNAM) surfQfile
CHARACTER*(MAX_LEN_FNAM) surfQnetFile
CHARACTER*(MAX_LEN_FNAM) surfQswFile
CHARACTER*(MAX_LEN_FNAM) EmPmRfile
CHARACTER*(MAX_LEN_FNAM) saltFluxFile
CHARACTER*(MAX_LEN_FNAM) uVelInitFile
CHARACTER*(MAX_LEN_FNAM) vVelInitFile
CHARACTER*(MAX_LEN_FNAM) pSurfInitFile
CHARACTER*(MAX_LEN_FNAM) dQdTfile
CHARACTER*(MAX_LEN_FNAM) ploadFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiXFile
CHARACTER*(MAX_LEN_FNAM) eddyPsiYFile
CHARACTER*(MAX_LEN_FNAM) lambdaThetaFile
CHARACTER*(MAX_LEN_FNAM) lambdaSaltFile
CHARACTER*(MAX_LEN_PREC/2) the_run_name
COMMON /PARM_I/
& cg2dMaxIters,
& cg2dChkResFreq, cg2dPreCondFreq,
& cg3dMaxIters,
& cg3dChkResFreq,
& nIter0, nTimeSteps, nEndIter,
& writeStatePrec,
& writeBinaryPrec, readBinaryPrec,
& nonlinFreeSurf, select_rStar,
& selectNHfreeSurf,
& selectSigmaCoord,
& selectAddFluid,
& momForcingOutAB, tracForcingOutAB,
& tempAdvScheme, tempVertAdvScheme,
& saltAdvScheme, saltVertAdvScheme,
& selectKEscheme, selectVortScheme,
& monitorSelect, debugLevel
INTEGER cg2dMaxIters
INTEGER cg2dChkResFreq
INTEGER cg2dPreCondFreq
INTEGER cg3dMaxIters
INTEGER cg3dChkResFreq
INTEGER nIter0
INTEGER nTimeSteps
INTEGER nEndIter
INTEGER writeStatePrec
INTEGER writeBinaryPrec
INTEGER readBinaryPrec
INTEGER nonlinFreeSurf
INTEGER select_rStar
INTEGER selectNHfreeSurf
INTEGER selectSigmaCoord
INTEGER selectAddFluid
INTEGER momForcingOutAB, tracForcingOutAB
INTEGER tempAdvScheme, tempVertAdvScheme
INTEGER saltAdvScheme, saltVertAdvScheme
INTEGER selectKEscheme
INTEGER selectVortScheme
INTEGER monitorSelect
INTEGER debugLevel
COMMON /PARM_L/
& fluidIsAir, fluidIsWater,
& usingPCoords, usingZCoords, useDynP_inEos_Zc,
& usingCartesianGrid, usingSphericalPolarGrid, rotateGrid,
& usingCurvilinearGrid, usingCylindricalGrid,
& deepAtmosphere, setInterFDr, setCenterDr,
& no_slip_sides, no_slip_bottom,
& useFullLeith, useStrainTensionVisc, useAreaViscLength,
& momViscosity, momAdvection, momForcing,
& momPressureForcing, metricTerms, useNHMTerms,
& useCoriolis, use3dCoriolis,
& useConstantF, useBetaPlaneF, useSphereF,
& useCDscheme, vectorInvariantMomentum,
& useEnergyConservingCoriolis, useJamartWetPoints, useJamartMomAdv,
& upwindVorticity, highOrderVorticity,
& useAbsVorticity, upwindShear,
& momStepping, tempStepping, saltStepping,
& tempAdvection, tempIsActiveTr, tempForcing,
& saltAdvection, saltIsActiveTr, saltForcing,
& maskIniTemp, maskIniSalt, checkIniTemp, checkIniSalt,
& useRealFreshWaterFlux,
& rigidLid, implicitFreeSurface, exactConserv, linFSConserveTr,
& uniformLin_PhiSurf,
& quasiHydrostatic, nonHydrostatic,
& use3Dsolver, implicitIntGravWave, staggerTimeStep,
& implicitDiffusion, implicitViscosity,
& tempImplVertAdv, saltImplVertAdv, momImplVertAdv,
& multiDimAdvection, useMultiDimAdvec,
& momDissip_In_AB, doAB_onGtGs,
& balanceEmPmR, balanceQnet, balancePrintMean,
& doThetaClimRelax, doSaltClimRelax,
& allowFreezing, useOldFreezing,
& periodicExternalForcing,
& globalFiles,
& pickupStrictlyMatch, usePickupBeforeC54, startFromPickupAB2,
& pickup_read_mdsio, pickup_write_mdsio, pickup_write_immed,
& writePickupAtEnd,
& timeave_mdsio, snapshot_mdsio, monitor_stdio,
& outputTypesInclusive, dumpInitAndLast, debugMode,
& inAdMode, inAdTrue, inAdFalse, inAdExact,
& useSRCGSolver
LOGICAL fluidIsAir
LOGICAL fluidIsWater
LOGICAL usingPCoords
LOGICAL usingZCoords
LOGICAL useDynP_inEos_Zc
LOGICAL usingCartesianGrid
LOGICAL usingSphericalPolarGrid, rotateGrid
LOGICAL usingCylindricalGrid
LOGICAL usingCurvilinearGrid
LOGICAL deepAtmosphere
LOGICAL setInterFDr
LOGICAL setCenterDr
LOGICAL useNHMTerms
LOGICAL no_slip_sides
LOGICAL no_slip_bottom
LOGICAL momViscosity
LOGICAL momAdvection
LOGICAL momForcing
LOGICAL momPressureForcing
LOGICAL useCoriolis
LOGICAL vectorInvariantMomentum
LOGICAL tempAdvection
LOGICAL tempIsActiveTr
LOGICAL tempForcing
LOGICAL saltAdvection
LOGICAL saltIsActiveTr
LOGICAL saltForcing
LOGICAL maskIniTemp
LOGICAL maskIniSalt
LOGICAL checkIniTemp
LOGICAL checkIniSalt
LOGICAL useRealFreshWaterFlux
LOGICAL useFullLeith
LOGICAL useStrainTensionVisc
LOGICAL useAreaViscLength
LOGICAL rigidLid
LOGICAL implicitFreeSurface
LOGICAL exactConserv
LOGICAL linFSConserveTr
LOGICAL uniformLin_PhiSurf
LOGICAL quasiHydrostatic
LOGICAL nonHydrostatic
LOGICAL use3Dsolver
LOGICAL implicitIntGravWave
LOGICAL staggerTimeStep
LOGICAL momStepping
LOGICAL tempStepping
LOGICAL saltStepping
LOGICAL metricTerms
LOGICAL useConstantF
LOGICAL useBetaPlaneF
LOGICAL useSphereF
LOGICAL use3dCoriolis
LOGICAL useCDscheme
LOGICAL useEnergyConservingCoriolis
LOGICAL useJamartWetPoints
LOGICAL useJamartMomAdv
LOGICAL upwindVorticity
LOGICAL highOrderVorticity
LOGICAL useAbsVorticity
LOGICAL upwindShear
LOGICAL implicitDiffusion
LOGICAL implicitViscosity
LOGICAL tempImplVertAdv
LOGICAL saltImplVertAdv
LOGICAL momImplVertAdv
LOGICAL multiDimAdvection
LOGICAL useMultiDimAdvec
LOGICAL momDissip_In_AB
LOGICAL doAB_onGtGs
LOGICAL balanceEmPmR
LOGICAL balanceQnet
LOGICAL balancePrintMean
LOGICAL doThetaClimRelax
LOGICAL doSaltClimRelax
LOGICAL allowFreezing
LOGICAL useOldFreezing
LOGICAL periodicExternalForcing
LOGICAL globalFiles
LOGICAL pickupStrictlyMatch
LOGICAL usePickupBeforeC54
LOGICAL startFromPickupAB2
LOGICAL pickup_read_mdsio, pickup_write_mdsio
LOGICAL pickup_write_immed, writePickupAtEnd
LOGICAL timeave_mdsio, snapshot_mdsio, monitor_stdio
LOGICAL outputTypesInclusive
LOGICAL dumpInitAndLast
LOGICAL debugMode
LOGICAL inAdMode, inAdTrue, inAdFalse, inAdExact
LOGICAL useSRCGSolver
C
COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit,
& cg2dpcOffDFac, cg3dTargetResidual,
& delR, delRc, delX, delY,
& deltaT, deltaTmom, dTtracerLev, deltaTfreesurf, deltaTClock,
& abEps, alph_AB, beta_AB,
& xgOrigin, ygOrigin, rSphere, recip_RSphere, f0, beta,
& viscFacAdj, viscAh, viscAhW, viscAhMax,
& viscAhGrid, viscAhGridMax, viscAhGridMin,
& viscC2leith, viscC2leithD,
& viscC2smag, viscC4smag,
& viscAhD, viscAhZ, viscA4D, viscA4Z,
& viscA4, viscA4W, viscA4Max,
& viscA4Grid, viscA4GridMax, viscA4GridMin,
& viscAhReMax, viscA4ReMax,
& viscC4leith, viscC4leithD, viscArNr,
& diffKhT, diffK4T, diffKrNrT,
& diffKhS, diffK4S, diffKrNrS,
& diffKrBL79surf, diffKrBL79deep, diffKrBL79scl, diffKrBL79Ho,
& BL79LatVary,
& diffKrBLEQsurf, diffKrBLEQdeep, diffKrBLEQscl, diffKrBLEQHo,
& tauCD, rCD, epsAB_CD,
& freeSurfFac, implicSurfPress, implicDiv2Dflow, implicitNHPress,
& hFacMin, hFacMinDz, hFacInf, hFacSup,
& gravity, recip_gravity, gBaro,
& rhonil, recip_rhonil, rhoConst, recip_rhoConst,
& rhoFacC, recip_rhoFacC, rhoFacF, recip_rhoFacF,
& rhoConstFresh, rho1Ref, tRef, sRef, phiRef, dBdrRef,
& rVel2wUnit, wUnit2rVel, mass2rUnit, rUnit2mass,
& baseTime, startTime, endTime,
& chkPtFreq, pChkPtFreq, dumpFreq, adjDumpFreq,
& diagFreq, taveFreq, tave_lastIter, monitorFreq, adjMonitorFreq,
& afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom,
& cosPower, cAdjFreq, omega, rotationPeriod,
& tauThetaClimRelax, tauSaltClimRelax, latBandClimRelax,
& externForcingCycle, externForcingPeriod,
& convertFW2Salt, temp_EvPrRn, salt_EvPrRn,
& temp_addMass, salt_addMass, hFacMinDr, hFacMinDp,
& ivdc_kappa, hMixCriteria, dRhoSmall, hMixSmooth,
& Ro_SeaLevel, rSigmaBnd,
& sideDragFactor, bottomDragLinear, bottomDragQuadratic, nh_Am2,
& smoothAbsFuncRange,
& tCylIn, tCylOut,
& phiEuler, thetaEuler, psiEuler
Real*8 cg2dTargetResidual
Real*8 cg2dTargetResWunit
Real*8 cg3dTargetResidual
Real*8 cg2dpcOffDFac
Real*8 delR(Nr)
Real*8 delRc(Nr+1)
Real*8 delX(Nx)
Real*8 delY(Ny)
Real*8 deltaT
Real*8 deltaTClock
Real*8 deltaTmom
Real*8 dTtracerLev(Nr)
Real*8 deltaTfreesurf
Real*8 abEps, alph_AB, beta_AB
Real*8 xgOrigin
Real*8 ygOrigin
Real*8 rSphere
Real*8 recip_rSphere
Real*8 f0
Real*8 freeSurfFac
Real*8 implicSurfPress
Real*8 implicDiv2Dflow
Real*8 implicitNHPress
Real*8 hFacMin
Real*8 hFacMinDz
Real*8 hFacMinDp
Real*8 hFacMinDr
Real*8 hFacInf
Real*8 hFacSup
Real*8 beta
Real*8 viscArNr(Nr)
Real*8 viscFacAdj
Real*8 viscAh
Real*8 viscAhW
Real*8 viscAhD
Real*8 viscAhZ
Real*8 viscAhMax
Real*8 viscAhReMax
Real*8 viscAhGrid, viscAhGridMax, viscAhGridMin
Real*8 viscC2leith
Real*8 viscC2leithD
Real*8 viscC2smag
Real*8 viscA4
Real*8 viscA4W
Real*8 viscA4D
Real*8 viscA4Z
Real*8 viscA4Max
Real*8 viscA4ReMax
Real*8 viscA4Grid, viscA4GridMax, viscA4GridMin
Real*8 viscC4leith
Real*8 viscC4leithD
Real*8 viscC4smag
Real*8 diffKhT
Real*8 diffKrNrT(Nr)
Real*8 diffK4T
Real*8 diffKhS
Real*8 diffKrNrS(Nr)
Real*8 diffK4S
Real*8 diffKrBL79surf
Real*8 diffKrBL79deep
Real*8 diffKrBL79scl
Real*8 diffKrBL79Ho
Real*8 BL79LatVary
Real*8 diffKrBLEQsurf
Real*8 diffKrBLEQdeep
Real*8 diffKrBLEQscl
Real*8 diffKrBLEQHo
Real*8 tauCD, rCD, epsAB_CD
Real*8 gravity
Real*8 recip_gravity
Real*8 gBaro
Real*8 rhonil, recip_rhonil
Real*8 rhoConst, recip_rhoConst
Real*8 rhoFacC(Nr), recip_rhoFacC(Nr)
Real*8 rhoFacF(Nr+1), recip_rhoFacF(Nr+1)
Real*8 rhoConstFresh
Real*8 rho1Ref(Nr)
Real*8 tRef(Nr)
Real*8 sRef(Nr)
Real*8 phiRef(2*Nr+1)
Real*8 dBdrRef(Nr)
Real*8 rVel2wUnit(Nr+1), wUnit2rVel(Nr+1)
Real*8 mass2rUnit, rUnit2mass
Real*8 baseTime
Real*8 startTime
Real*8 endTime
Real*8 chkPtFreq
Real*8 pChkPtFreq
Real*8 dumpFreq
Real*8 adjDumpFreq
Real*8 diagFreq
Real*8 taveFreq
Real*8 tave_lastIter
Real*8 monitorFreq
Real*8 adjMonitorFreq
Real*8 afFacMom
Real*8 vfFacMom
Real*8 pfFacMom
Real*8 cfFacMom
Real*8 foFacMom
Real*8 mtFacMom
Real*8 cosPower
Real*8 cAdjFreq
Real*8 omega
Real*8 rotationPeriod
Real*8 tauThetaClimRelax
Real*8 tauSaltClimRelax
Real*8 latBandClimRelax
Real*8 externForcingCycle
Real*8 externForcingPeriod
Real*8 convertFW2Salt
Real*8 temp_EvPrRn
Real*8 salt_EvPrRn
Real*8 temp_addMass
Real*8 salt_addMass
Real*8 ivdc_kappa
Real*8 hMixCriteria
Real*8 dRhoSmall
Real*8 hMixSmooth
Real*8 Ro_SeaLevel
Real*8 rSigmaBnd
Real*8 sideDragFactor
Real*8 bottomDragLinear
Real*8 bottomDragQuadratic
Real*8 smoothAbsFuncRange
Real*8 nh_Am2
Real*8 tCylIn
Real*8 tCylOut
Real*8 phiEuler, thetaEuler, psiEuler
COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp
Real*8 HeatCapacity_Cp
Real*8 recip_Cp
COMMON /PARM_ATM/
& celsius2K,
& atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po,
& integr_GeoPot, selectFindRoSurf
Real*8 celsius2K
Real*8 atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq
INTEGER integr_GeoPot, selectFindRoSurf
LOGICAL useGAD
LOGICAL useOBCS
LOGICAL useSHAP_FILT
LOGICAL useZONAL_FILT
LOGICAL useOPPS
LOGICAL usePP81
LOGICAL useMY82
LOGICAL useGGL90
LOGICAL useKPP
LOGICAL useGMRedi
LOGICAL useDOWN_SLOPE
LOGICAL useCAL
LOGICAL useEXF
LOGICAL useBulkForce
LOGICAL useEBM
LOGICAL useCheapAML
LOGICAL useGrdchk
LOGICAL useSMOOTH
LOGICAL useECCO
LOGICAL useSBO
LOGICAL useFLT
LOGICAL usePTRACERS
LOGICAL useGCHEM
LOGICAL useRBCS
LOGICAL useOffLine
LOGICAL useMATRIX
LOGICAL useSEAICE
LOGICAL useSALT_PLUME
LOGICAL useShelfIce
LOGICAL useICEFRONT
LOGICAL useThSIce
LOGICAL useATM2d
LOGICAL useAIM
LOGICAL useLand
LOGICAL useFizhi
LOGICAL useGridAlt
LOGICAL useDiagnostics
LOGICAL useREGRID
LOGICAL useLayers
LOGICAL useMNC
LOGICAL useRunClock
LOGICAL useEMBED_FILES
LOGICAL useMYPACKAGE
COMMON /PARM_PACKAGES/
& useGAD, useOBCS, useSHAP_FILT, useZONAL_FILT,
& useOPPS, usePP81, useMY82, useGGL90, useKPP,
& useGMRedi, useDOWN_SLOPE,
& useCAL, useEXF, useBulkForce, useEBM, useCheapAML,
& useGrdchk, useSMOOTH, useECCO, useSBO, useFLT,
& usePTRACERS, useGCHEM, useRBCS, useOffLine, useMATRIX,
& useSEAICE, useSALT_PLUME, useShelfIce,
& useICEFRONT, useThSIce,
& useATM2D, useAIM, useLand, useFizhi, useGridAlt,
& useDiagnostics, useREGRID, useLayers, useMNC,
& useRunClock, useEMBED_FILES,
& useMYPACKAGE
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
COMMON /GRID_RL/
& cosFacU, cosFacV, sqCosFacU, sqCosFacV,
& deepFacC, deepFac2C, recip_deepFacC, recip_deepFac2C,
& deepFacF, deepFac2F, recip_deepFacF, recip_deepFac2F,
& gravitySign, rkSign, globalArea
Real*8 cosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 cosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacU (1-Oly:sNy+Oly,nSx,nSy)
Real*8 sqCosFacV (1-Oly:sNy+Oly,nSx,nSy)
Real*8 deepFacC (Nr)
Real*8 deepFac2C (Nr)
Real*8 deepFacF (Nr+1)
Real*8 deepFac2F (Nr+1)
Real*8 recip_deepFacC (Nr)
Real*8 recip_deepFac2C(Nr)
Real*8 recip_deepFacF (Nr+1)
Real*8 recip_deepFac2F(Nr+1)
Real*8 gravitySign
Real*8 rkSign
Real*8 globalArea
cC maskH :: cell Center full-column mask (= 2D mask)
COMMON /GRID_RS/
& dxC,dxF,dxG,dxV,dyC,dyF,dyG,dyU,
& R_low, rLowW, rLowS,
& Ro_surf, rSurfW, rSurfS,
& hFacC, hFacW, hFacS,
& recip_dxC,recip_dxF,recip_dxG,recip_dxV,
& recip_dyC,recip_dyF,recip_dyG,recip_dyU,
& recip_Rcol,
& recip_hFacC,recip_hFacW,recip_hFacS,
& xC,yC,rA,rAw,rAs,rAz,xG,yG,
& maskInC, maskInW, maskInS,
& maskC, maskW, maskS,
& recip_rA,recip_rAw,recip_rAs,recip_rAz,
& drC, drF, recip_drC, recip_drF, rC, rF,
& aHybSigmF, bHybSigmF, aHybSigmC, bHybSigmC,
& dAHybSigF, dBHybSigF, dBHybSigC, dAHybSigC,
& tanPhiAtU, tanPhiAtV, angleCosC, angleSinC,
& fCori, fCoriG, fCoriCos
Real*8 dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 R_low (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rLowS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 Ro_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rSurfS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_dxC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dxV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_dyU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Rcol (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_hFacC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 recip_hFacS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 xC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 xG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 yG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rA (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAw (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAs (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_rAz (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskInS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 maskC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskW (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 maskS (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
Real*8 drC (Nr)
Real*8 drF (Nr)
Real*8 recip_drC (Nr)
Real*8 recip_drF (Nr)
Real*8 rC (Nr)
Real*8 rF (Nr+1)
Real*8 aHybSigmF (Nr+1)
Real*8 bHybSigmF (Nr+1)
Real*8 aHybSigmC (Nr)
Real*8 bHybSigmC (Nr)
Real*8 dAHybSigF (Nr)
Real*8 dBHybSigF (Nr)
Real*8 dBHybSigC (Nr+1)
Real*8 dAHybSigC (Nr+1)
Real*8 tanPhiAtU (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 tanPhiAtV (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleCosC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 angleSinC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCori (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriG (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 fCoriCos (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /GRID_I/
& kSurfC, kSurfW, kSurfS,
& kLowC
INTEGER kSurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kSurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
INTEGER kLowC (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
C
COMMON /SURF_FIXED/ Bo_surf, recip_Bo, topoZ, phi0surf
Real*8 Bo_surf (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 recip_Bo(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 topoZ (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
Real*8 phi0surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
COMMON /SURF_CORREC/ TsurfCor, SsurfCor
Real*8 TsurfCor
Real*8 SsurfCor
COMMON /EXACT_ETA_LOCAL/ etaHnm1, dEtaHdt, PmEpR
Real*8 etaHnm1(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 dEtaHdt(1-Olx:sNx+Olx,1-Oly:sNy+Oly,nSx,nSy)
Real*8 PmEpR (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
c
c
c
c
c
integer nyears_chkpt
integer nmonths_chkpt
integer ndays_chkpt
integer ngeom_chkpt
integer ncheck_chkpt
integer nthreads_chkpt
parameter (nyears_chkpt = 1 )
parameter (nmonths_chkpt = 12 )
parameter (ndays_chkpt = 31 )
parameter (ngeom_chkpt = nr*nsx*nsy )
parameter (ncheck_chkpt = 6 )
parameter ( nthreads_chkpt = 1 )
integer nchklev_1
parameter( nchklev_1 = 30 )
integer nchklev_2
parameter( nchklev_2 = 5 )
integer nchklev_3
parameter( nchklev_3 = 5 )
c
c
c
common /tamc_keys_i/
& ikey_dynamics,
& ikey_yearly,
& ikey_daily_1,
& ikey_daily_2,
& iloop_daily
integer ikey_dynamics
integer ikey_yearly
integer ikey_daily_1
integer ikey_daily_2
integer iloop_daily
INTEGER isbyte
PARAMETER( isbyte = 8 )
INTEGER maximpl
PARAMETER( maximpl = 6 )
INTEGER maxpass
PARAMETER( maxpass = 2 )
INTEGER maxcube
PARAMETER( maxcube = 1 )
INTEGER act0, act1, act2, act3, act4
INTEGER max0, max1, max2, max3
INTEGER iikey, kkey, passkey, igadkey,
& itdkey, idynkey, igmkey, iptrkey
C
integer key, ikey
common /tamckeys/ key, ikey
Real*8 myTime
INTEGER myIter
INTEGER myThid
RETURN
END
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ad_input_code_ad.f.old
Type: application/x-trash
Size: 2770664 bytes
Desc: not available
URL: <http://mitgcm.org/pipermail/mitgcm-devel/attachments/20101014/5f96a66c/attachment-0001.bin>
-------------- next part --------------
C DISCLAIMER
C
C This file was generated by TAF version 2.0.2
C
C FASTOPT DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
C INCLUDING (WITHOUT LIMITATION) ALL IMPLIED WARRANTIES OF
C MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, WITH
C RESPECT TO THE SOFTWARE AND USER PROGRAMS. IN NO EVENT
C SHALL FASTOPT BE LIABLE FOR ANY LOST OR ANTICIPATED PROF-
C ITS, OR ANY INDIRECT, INCIDENTAL, EXEMPLARY, SPECIAL, OR
C CONSEQUENTIAL DAMAGES, WHETHER OR NOT FASTOPT WAS ADVISED
C OF THE POSSIBILITY OF SUCH DAMAGES.
C
C Haftungsbeschraenkung
C FastOpt gibt ausdruecklich keine Gewaehr, explizit oder indirekt,
C bezueglich der Brauchbarkeit der Software fuer einen bestimmten
C Zweck. Unter keinen Umstaenden ist FastOpt haftbar fuer
C irgendeinen Verlust oder nicht eintretenden erwarteten Gewinn und
C allen indirekten, zufaelligen, exemplarischen oder speziellen
C Schaeden oder Folgeschaeden unabhaengig von einer eventuellen
C Mitteilung darueber an FastOpt.
C
subroutine adadams_bashforth2( bi, bj, k, adgtracer, adgtrnm1,
$startab, myiter )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adgtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtrnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
integer myiter
integer startab
C==============================================
C declare local variables
C==============================================
double precision ab05
double precision ab15
double precision adgtrtmp
integer i
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adgtrtmp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (myiter .eq. niter0 .and. startab .eq. 0) then
ab15 = 1.d0
ab05 = 0.d0
else
ab15 = 1.5d0+abeps
ab05 = -(0.5d0+abeps)
endif
do j = sny+oly, 1-oly, -1
adgtrtmp = 0.d0
do i = snx+olx, 1-olx, -1
adgtrtmp = 0.d0
adgtrtmp = adgtrtmp+adgtracer(i,j,k,bi,bj)
adgtracer(i,j,k,bi,bj) = 0.d0
adgtracer(i,j,k,bi,bj) = adgtracer(i,j,k,bi,bj)+adgtrnm1(i,j,
$k,bi,bj)
adgtrnm1(i,j,k,bi,bj) = 0.d0
adgtracer(i,j,k,bi,bj) = adgtracer(i,j,k,bi,bj)+adgtrtmp*ab15
adgtrnm1(i,j,k,bi,bj) = adgtrnm1(i,j,k,bi,bj)+adgtrtmp*ab05
adgtrtmp = 0.d0
end do
end do
end
subroutine adautodiff_restore( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer ndv2d
parameter ( ndv2d = 23 )
integer ndv3d
parameter ( ndv3d = 12 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adstoredynvars2d(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy,ndv2d)
double precision adstoredynvars3d(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy,ndv3d)
common /adautodiff_store_dyn/ adstoredynvars3d, adstoredynvars2d
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adetah(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /addynvars_r_2/ adetah
double precision addetahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adpmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adexact_eta_local/ addetahdt, adpmepr
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
double precision adempmr0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adempmr1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adtdfields/ adtaux0, adtauy0, adqnet0, adempmr0, adsst0,
$adsss0, adtaux1, adtauy1, adqnet1, adempmr1, adsst1, adsss1,
$adsaltflux0, adsaltflux1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
integer i
integer j
integer k
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adstoredynvars3d(i,j,k,bi,bj,12) = adstoredynvars3d(i,j,
$k,bi,bj,12)+adtotphihyd(i,j,k,bi,bj)
adtotphihyd(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,11) = adstoredynvars3d(i,j,
$k,bi,bj,11)+adwvel(i,j,k,bi,bj)
adwvel(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,10) = adstoredynvars3d(i,j,
$k,bi,bj,10)+advvel(i,j,k,bi,bj)
advvel(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,9) = adstoredynvars3d(i,j,
$k,bi,bj,9)+aduvel(i,j,k,bi,bj)
aduvel(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,8) = adstoredynvars3d(i,j,
$k,bi,bj,8)+adsalt(i,j,k,bi,bj)
adsalt(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,7) = adstoredynvars3d(i,j,
$k,bi,bj,7)+adtheta(i,j,k,bi,bj)
adtheta(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,6) = adstoredynvars3d(i,j,
$k,bi,bj,6)+adgvnm1(i,j,k,bi,bj)
adgvnm1(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,5) = adstoredynvars3d(i,j,
$k,bi,bj,5)+adgunm1(i,j,k,bi,bj)
adgunm1(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,4) = adstoredynvars3d(i,j,
$k,bi,bj,4)+adgsnm1(i,j,k,bi,bj)
adgsnm1(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,3) = adstoredynvars3d(i,j,
$k,bi,bj,3)+adgtnm1(i,j,k,bi,bj)
adgtnm1(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,2) = adstoredynvars3d(i,j,
$k,bi,bj,2)+adgt(i,j,k,bi,bj)
adgt(i,j,k,bi,bj) = 0.d0
adstoredynvars3d(i,j,k,bi,bj,1) = adstoredynvars3d(i,j,
$k,bi,bj,1)+adgs(i,j,k,bi,bj)
adgs(i,j,k,bi,bj) = 0.d0
end do
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adstoredynvars2d(i,j,bi,bj,23) = adstoredynvars2d(i,j,bi,
$bj,23)+adpmepr(i,j,bi,bj)
adpmepr(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,22) = adstoredynvars2d(i,j,bi,
$bj,22)+addetahdt(i,j,bi,bj)
addetahdt(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,21) = adstoredynvars2d(i,j,bi,
$bj,21)+adetah(i,j,bi,bj)
adetah(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,16) = adstoredynvars2d(i,j,bi,
$bj,16)+adsaltflux1(i,j,bi,bj)
adsaltflux1(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,15) = adstoredynvars2d(i,j,bi,
$bj,15)+adsaltflux0(i,j,bi,bj)
adsaltflux0(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,14) = adstoredynvars2d(i,j,bi,
$bj,14)+adsss1(i,j,bi,bj)
adsss1(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,13) = adstoredynvars2d(i,j,bi,
$bj,13)+adsss0(i,j,bi,bj)
adsss0(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,12) = adstoredynvars2d(i,j,bi,
$bj,12)+adsst1(i,j,bi,bj)
adsst1(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,11) = adstoredynvars2d(i,j,bi,
$bj,11)+adsst0(i,j,bi,bj)
adsst0(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,10) = adstoredynvars2d(i,j,bi,
$bj,10)+adempmr1(i,j,bi,bj)
adempmr1(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,9) = adstoredynvars2d(i,j,bi,
$bj,9)+adempmr0(i,j,bi,bj)
adempmr0(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,8) = adstoredynvars2d(i,j,bi,
$bj,8)+adqnet1(i,j,bi,bj)
adqnet1(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,7) = adstoredynvars2d(i,j,bi,
$bj,7)+adqnet0(i,j,bi,bj)
adqnet0(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,6) = adstoredynvars2d(i,j,bi,
$bj,6)+adtauy1(i,j,bi,bj)
adtauy1(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,5) = adstoredynvars2d(i,j,bi,
$bj,5)+adtauy0(i,j,bi,bj)
adtauy0(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,4) = adstoredynvars2d(i,j,bi,
$bj,4)+adtaux1(i,j,bi,bj)
adtaux1(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,3) = adstoredynvars2d(i,j,bi,
$bj,3)+adtaux0(i,j,bi,bj)
adtaux0(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,2) = adstoredynvars2d(i,j,bi,
$bj,2)+adsurfaceforcingtice(i,j,bi,bj)
adsurfaceforcingtice(i,j,bi,bj) = 0.d0
adstoredynvars2d(i,j,bi,bj,1) = adstoredynvars2d(i,j,bi,
$bj,1)+adetan(i,j,bi,bj)
adetan(i,j,bi,bj) = 0.d0
end do
end do
end do
end do
end
subroutine adautodiff_store( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer ndv2d
parameter ( ndv2d = 23 )
integer ndv3d
parameter ( ndv3d = 12 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adstoredynvars2d(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy,ndv2d)
double precision adstoredynvars3d(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy,ndv3d)
common /adautodiff_store_dyn/ adstoredynvars3d, adstoredynvars2d
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adetah(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /addynvars_r_2/ adetah
double precision addetahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adpmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adexact_eta_local/ addetahdt, adpmepr
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
double precision adempmr0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adempmr1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adtdfields/ adtaux0, adtauy0, adqnet0, adempmr0, adsst0,
$adsss0, adtaux1, adtauy1, adqnet1, adempmr1, adsst1, adsss1,
$adsaltflux0, adsaltflux1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
integer i
integer j
integer k
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adtotphihyd(i,j,k,bi,bj) = adtotphihyd(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,12)
adstoredynvars3d(i,j,k,bi,bj,12) = 0.d0
adwvel(i,j,k,bi,bj) = adwvel(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,11)
adstoredynvars3d(i,j,k,bi,bj,11) = 0.d0
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,10)
adstoredynvars3d(i,j,k,bi,bj,10) = 0.d0
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,9)
adstoredynvars3d(i,j,k,bi,bj,9) = 0.d0
adsalt(i,j,k,bi,bj) = adsalt(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,8)
adstoredynvars3d(i,j,k,bi,bj,8) = 0.d0
adtheta(i,j,k,bi,bj) = adtheta(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,7)
adstoredynvars3d(i,j,k,bi,bj,7) = 0.d0
adgvnm1(i,j,k,bi,bj) = adgvnm1(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,6)
adstoredynvars3d(i,j,k,bi,bj,6) = 0.d0
adgunm1(i,j,k,bi,bj) = adgunm1(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,5)
adstoredynvars3d(i,j,k,bi,bj,5) = 0.d0
adgsnm1(i,j,k,bi,bj) = adgsnm1(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,4)
adstoredynvars3d(i,j,k,bi,bj,4) = 0.d0
adgtnm1(i,j,k,bi,bj) = adgtnm1(i,j,k,bi,bj)+
$adstoredynvars3d(i,j,k,bi,bj,3)
adstoredynvars3d(i,j,k,bi,bj,3) = 0.d0
adgt(i,j,k,bi,bj) = adgt(i,j,k,bi,bj)+adstoredynvars3d(
$i,j,k,bi,bj,2)
adstoredynvars3d(i,j,k,bi,bj,2) = 0.d0
adgs(i,j,k,bi,bj) = adgs(i,j,k,bi,bj)+adstoredynvars3d(
$i,j,k,bi,bj,1)
adstoredynvars3d(i,j,k,bi,bj,1) = 0.d0
end do
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adpmepr(i,j,bi,bj) = adpmepr(i,j,bi,bj)+adstoredynvars2d(
$i,j,bi,bj,23)
adstoredynvars2d(i,j,bi,bj,23) = 0.d0
addetahdt(i,j,bi,bj) = addetahdt(i,j,bi,bj)+
$adstoredynvars2d(i,j,bi,bj,22)
adstoredynvars2d(i,j,bi,bj,22) = 0.d0
adetah(i,j,bi,bj) = adetah(i,j,bi,bj)+adstoredynvars2d(i,
$j,bi,bj,21)
adstoredynvars2d(i,j,bi,bj,21) = 0.d0
adstoredynvars2d(i,j,bi,bj,20) = 0.d0
adstoredynvars2d(i,j,bi,bj,19) = 0.d0
adstoredynvars2d(i,j,bi,bj,18) = 0.d0
adstoredynvars2d(i,j,bi,bj,17) = 0.d0
adsaltflux1(i,j,bi,bj) = adsaltflux1(i,j,bi,bj)+
$adstoredynvars2d(i,j,bi,bj,16)
adstoredynvars2d(i,j,bi,bj,16) = 0.d0
adsaltflux0(i,j,bi,bj) = adsaltflux0(i,j,bi,bj)+
$adstoredynvars2d(i,j,bi,bj,15)
adstoredynvars2d(i,j,bi,bj,15) = 0.d0
adsss1(i,j,bi,bj) = adsss1(i,j,bi,bj)+adstoredynvars2d(i,
$j,bi,bj,14)
adstoredynvars2d(i,j,bi,bj,14) = 0.d0
adsss0(i,j,bi,bj) = adsss0(i,j,bi,bj)+adstoredynvars2d(i,
$j,bi,bj,13)
adstoredynvars2d(i,j,bi,bj,13) = 0.d0
adsst1(i,j,bi,bj) = adsst1(i,j,bi,bj)+adstoredynvars2d(i,
$j,bi,bj,12)
adstoredynvars2d(i,j,bi,bj,12) = 0.d0
adsst0(i,j,bi,bj) = adsst0(i,j,bi,bj)+adstoredynvars2d(i,
$j,bi,bj,11)
adstoredynvars2d(i,j,bi,bj,11) = 0.d0
adempmr1(i,j,bi,bj) = adempmr1(i,j,bi,bj)+
$adstoredynvars2d(i,j,bi,bj,10)
adstoredynvars2d(i,j,bi,bj,10) = 0.d0
adempmr0(i,j,bi,bj) = adempmr0(i,j,bi,bj)+
$adstoredynvars2d(i,j,bi,bj,9)
adstoredynvars2d(i,j,bi,bj,9) = 0.d0
adqnet1(i,j,bi,bj) = adqnet1(i,j,bi,bj)+adstoredynvars2d(
$i,j,bi,bj,8)
adstoredynvars2d(i,j,bi,bj,8) = 0.d0
adqnet0(i,j,bi,bj) = adqnet0(i,j,bi,bj)+adstoredynvars2d(
$i,j,bi,bj,7)
adstoredynvars2d(i,j,bi,bj,7) = 0.d0
adtauy1(i,j,bi,bj) = adtauy1(i,j,bi,bj)+adstoredynvars2d(
$i,j,bi,bj,6)
adstoredynvars2d(i,j,bi,bj,6) = 0.d0
adtauy0(i,j,bi,bj) = adtauy0(i,j,bi,bj)+adstoredynvars2d(
$i,j,bi,bj,5)
adstoredynvars2d(i,j,bi,bj,5) = 0.d0
adtaux1(i,j,bi,bj) = adtaux1(i,j,bi,bj)+adstoredynvars2d(
$i,j,bi,bj,4)
adstoredynvars2d(i,j,bi,bj,4) = 0.d0
adtaux0(i,j,bi,bj) = adtaux0(i,j,bi,bj)+adstoredynvars2d(
$i,j,bi,bj,3)
adstoredynvars2d(i,j,bi,bj,3) = 0.d0
adsurfaceforcingtice(i,j,bi,bj) = adsurfaceforcingtice(i,
$j,bi,bj)+adstoredynvars2d(i,j,bi,bj,2)
adstoredynvars2d(i,j,bi,bj,2) = 0.d0
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+adstoredynvars2d(i,
$j,bi,bj,1)
adstoredynvars2d(i,j,bi,bj,1) = 0.d0
end do
end do
end do
end do
end
subroutine adcalc_3d_diffusivity( bi, bj, imin, imax, jmin, jmax,
$tridentity, trusegmredi, trusekpp, adkappartr )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adkappartr(1-olx:snx+olx,1-oly:sny+oly,nr)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer tridentity
logical trusegmredi
logical trusekpp
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer k
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (trusegmredi) then
call adgmredi_calc_diff( bi,bj,imin,imax,jmin,jmax,0,nr,
$adkappartr,tridentity )
endif
if ( .not. trusekpp) then
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if ( .true. ) then
adkappartr(i,j,k) = 0.d0
endif
end do
end do
end do
endif
end
subroutine adcalc_common_factors( aduvel, advvel, adufld, advfld,
$adutrans, advtrans, k, bi, bj )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
xa(i,j) = dyg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacw(i,j,k,bi,bj)
ya(i,j) = dxg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacs(i,j,k,bi,bj)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
advfld(i,j) = advfld(i,j)+advtrans(i,j)*ya(i,j)*rhofacc(k)
advtrans(i,j) = 0.d0
adufld(i,j) = adufld(i,j)+adutrans(i,j)*xa(i,j)*rhofacc(k)
adutrans(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+advfld(i,j)
advfld(i,j) = 0.d0
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+adufld(i,j)
adufld(i,j) = 0.d0
end do
end do
end
subroutine adcalc_diffusivity( bi, bj, imin, imax, jmin, jmax, k,
$maskup, adkappart, adkappars )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_salinity
parameter ( gad_salinity = 2 )
integer gad_temperature
parameter ( gad_temperature = 1 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
C==============================================
C declare arguments
C==============================================
double precision adkappars(1-olx:snx+olx,1-oly:sny+oly)
double precision adkappart(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adkappars(i,j) = adkappars(i,j)*maskup(i,j)
adkappart(i,j) = adkappart(i,j)*maskup(i,j)
end do
end do
if (usegmredi) then
call adgmredi_calc_diff( bi,bj,imin,imax,jmin,jmax,k,1,
$adkappars,gad_salinity )
call adgmredi_calc_diff( bi,bj,imin,imax,jmin,jmax,k,1,
$adkappart,gad_temperature )
endif
if ( .not. usekpp) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adkappars(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adkappart(i,j) = 0.d0
end do
end do
endif
end
subroutine adcalc_div_ghat( bi, bj, k, adcg2d_b )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adcg2d_b(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
double precision adpf(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adpf(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1, sny+1
do i = 1, snx+1
xa(i,j) = dyg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacw(i,j,k,bi,bj)
$*rhofacc(k)
ya(i,j) = dxg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacs(i,j,k,bi,bj)
$*rhofacc(k)
end do
end do
do j = 1, sny
do i = 1, snx
adpf(i,j+1) = adpf(i,j+1)+adcg2d_b(i,j,bi,bj)
adpf(i,j) = adpf(i,j)-adcg2d_b(i,j,bi,bj)
end do
end do
if (implicdiv2dflow .eq. 1.) then
do j = 1, sny+1
do i = 1, snx
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)+adpf(i,j)*(ya(i,j)/
$deltatmom)
adpf(i,j) = 0.d0
end do
end do
else if (exactconserv) then
do j = 1, sny+1
do i = 1, snx
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)+adpf(i,j)*(
$implicdiv2dflow*ya(i,j)/deltatmom)
adpf(i,j) = 0.d0
end do
end do
else
do j = 1, sny+1
do i = 1, snx
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)+adpf(i,j)*(
$implicdiv2dflow*ya(i,j)/deltatmom)
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+adpf(i,j)*((1.d0-
$implicdiv2dflow)*ya(i,j)/deltatmom)
adpf(i,j) = 0.d0
end do
end do
endif
do j = 1, sny
do i = 1, snx
adpf(i+1,j) = adpf(i+1,j)+adcg2d_b(i,j,bi,bj)
adpf(i,j) = adpf(i,j)-adcg2d_b(i,j,bi,bj)
end do
end do
if (implicdiv2dflow .eq. 1.) then
do j = 1, sny
do i = 1, snx+1
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)+adpf(i,j)*(xa(i,j)/
$deltatmom)
adpf(i,j) = 0.d0
end do
end do
else if (exactconserv) then
do j = 1, sny
do i = 1, snx+1
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)+adpf(i,j)*(
$implicdiv2dflow*xa(i,j)/deltatmom)
adpf(i,j) = 0.d0
end do
end do
else
do j = 1, sny
do i = 1, snx+1
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)+adpf(i,j)*(
$implicdiv2dflow*xa(i,j)/deltatmom)
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+adpf(i,j)*((1.d0-
$implicdiv2dflow)*xa(i,j)/deltatmom)
adpf(i,j) = 0.d0
end do
end do
endif
end
subroutine adcalc_grad_phi_hyd( k, bi, bj, imin, imax, jmin, jmax,
$ adphihydc, addphihydx, addphihydy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision addphihydx(1-olx:snx+olx,1-oly:sny+oly)
double precision addphihydy(1-olx:snx+olx,1-oly:sny+oly)
double precision adphihydc(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
C==============================================
C declare local variables
C==============================================
double precision advarloc(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advarloc(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmin+1, jmax
do i = imin, imax
advarloc(i,j-1) = advarloc(i,j-1)-addphihydy(i,j)*recip_dyc(i,
$j,bi,bj)*recip_deepfacc(k)*recip_rhofacc(k)
advarloc(i,j) = advarloc(i,j)+addphihydy(i,j)*recip_dyc(i,j,
$bi,bj)*recip_deepfacc(k)*recip_rhofacc(k)
addphihydy(i,j) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin+1, imax
advarloc(i-1,j) = advarloc(i-1,j)-addphihydx(i,j)*recip_dxc(i,
$j,bi,bj)*recip_deepfacc(k)*recip_rhofacc(k)
advarloc(i,j) = advarloc(i,j)+addphihydx(i,j)*recip_dxc(i,j,
$bi,bj)*recip_deepfacc(k)*recip_rhofacc(k)
addphihydx(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
addphihydy(i,j) = 0.d0
addphihydx(i,j) = 0.d0
end do
end do
if ( .true. ) then
do j = jmin, jmax
do i = imin, imax
adphihydc(i,j) = adphihydc(i,j)+advarloc(i,j)
advarloc(i,j) = 0.d0
end do
end do
endif
end
subroutine adcalc_grad_phi_surf( bi, bj, imin, imax, jmin, jmax,
$adetafld, adphisurfx, adphisurfy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision bo_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision phi0surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_bo(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision topoz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /surf_fixed/ bo_surf, recip_bo, topoz, phi0surf
C==============================================
C declare arguments
C==============================================
double precision adetafld(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adphisurfx(1-olx:snx+olx,1-oly:sny+oly)
double precision adphisurfy(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmin, jmax
do i = imin, imax
adetafld(i,j-1,bi,bj) = adetafld(i,j-1,bi,bj)-adphisurfy(i,j)*
$recip_dyc(i,j,bi,bj)*bo_surf(i,j-1,bi,bj)
adetafld(i,j,bi,bj) = adetafld(i,j,bi,bj)+adphisurfy(i,j)*
$recip_dyc(i,j,bi,bj)*bo_surf(i,j,bi,bj)
adphisurfy(i,j) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin, imax
adetafld(i-1,j,bi,bj) = adetafld(i-1,j,bi,bj)-adphisurfx(i,j)*
$recip_dxc(i,j,bi,bj)*bo_surf(i-1,j,bi,bj)
adetafld(i,j,bi,bj) = adetafld(i,j,bi,bj)+adphisurfx(i,j)*
$recip_dxc(i,j,bi,bj)*bo_surf(i,j,bi,bj)
adphisurfx(i,j) = 0.d0
end do
end do
end
subroutine adcalc_gs( bi, bj, imin, imax, jmin, jmax, k, kup,
$kdown, xa, ya, maskup, ufld, adufld, vfld, advfld, wfld, adwfld,
$utrans, adutrans, vtrans, advtrans, rtrans, adrtrans, rtranskp1,
$adrtranskp1, kappars, adkappars, adfvers, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_salinity
parameter ( gad_salinity = 2 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
logical adamsbashforth_s
logical adamsbashforth_t
logical adamsbashforthgs
logical adamsbashforthgt
logical saltmultidimadvec
logical saltsom_advection
logical tempmultidimadvec
logical tempsom_advection
common /gad_parm_l/ tempsom_advection, saltsom_advection,
$tempmultidimadvec, saltmultidimadvec, adamsbashforthgt,
$adamsbashforthgs, adamsbashforth_t, adamsbashforth_s
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer dphinhstatus
integer mom_startab
integer nchecklev
integer nhydstartab
integer saltstartab
integer tempstartab
common /restart_i/ nchecklev, tempstartab, saltstartab,
$mom_startab, nhydstartab, dphinhstatus
C==============================================
C declare arguments
C==============================================
double precision adfvers(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adkappars(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kappars(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer myiter
integer mythid
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
logical calcadvection
integer iternb
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
calcadvection = saltadvection .and. ( .not. saltmultidimadvec)
iternb = myiter
if (staggertimestep) then
iternb = myiter-1
endif
if (saltforcing .and. tracforcingoutab .eq. 1) then
call adexternal_forcing_s( bi,bj,k )
endif
if (adamsbashforthgs) then
call adadams_bashforth2( bi,bj,k,adgs,adgsnm1,saltstartab,
$iternb )
endif
if (saltforcing .and. tracforcingoutab .ne. 1) then
call adexternal_forcing_s( bi,bj,k )
endif
call adgad_calc_rhs( bi,bj,imin,imax,jmin,jmax,k,kup,kdown,xa,ya,
$maskup,ufld,adufld,vfld,advfld,wfld,adwfld,utrans,adutrans,vtrans,
$advtrans,rtrans,adrtrans,rtranskp1,adrtranskp1,diffkhs,diffk4s,
$kappars,adkappars,gsnm1,adgsnm1,salt,adsalt,dttracerlev,
$gad_salinity,saltadvscheme,saltvertadvscheme,calcadvection,
$saltimplvertadv,adamsbashforth_s,usegmredi,adfvers,adgs,mythid )
end
subroutine mdcalc_gs( bi, bj, imin, imax, jmin, jmax, k, km1, kup,
$ kdown, xa, ya, maskup, ufld, vfld, wfld, utrans, vtrans, rtrans,
$rtranskp1, kappars, fvers, mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_salinity
parameter ( gad_salinity = 2 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
logical adamsbashforth_s
logical adamsbashforth_t
logical adamsbashforthgs
logical adamsbashforthgt
logical saltmultidimadvec
logical saltsom_advection
logical tempmultidimadvec
logical tempsom_advection
common /gad_parm_l/ tempsom_advection, saltsom_advection,
$tempmultidimadvec, saltmultidimadvec, adamsbashforthgt,
$adamsbashforthgs, adamsbashforth_t, adamsbashforth_s
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer dphinhstatus
integer mom_startab
integer nchecklev
integer nhydstartab
integer saltstartab
integer tempstartab
common /restart_i/ nchecklev, tempstartab, saltstartab,
$mom_startab, nhydstartab, dphinhstatus
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
double precision fvers(1-olx:snx+olx,1-oly:sny+oly,2)
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kappars(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer km1
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer myiter
integer mythid
double precision mytime
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
logical calcadvection
integer iternb
C**********************************************
C executable statements of routine
C**********************************************
fvers(1,1,kdown) = fvers(1,1,kdown)
calcadvection = saltadvection .and. ( .not. saltmultidimadvec)
iternb = myiter
if (staggertimestep) then
iternb = myiter-1
endif
call mdgad_calc_rhs( bi,bj,imin,imax,jmin,jmax,k,km1,kup,kdown,xa,
$ya,maskup,ufld,vfld,wfld,utrans,vtrans,rtrans,rtranskp1,diffkhs,
$diffk4s,kappars,gsnm1,salt,dttracerlev,gad_salinity,saltadvscheme,
$saltvertadvscheme,calcadvection,saltimplvertadv,adamsbashforth_s,
$usegmredi,usekpp,fvers,gs,mytime,myiter,mythid )
if (saltforcing .and. tracforcingoutab .ne. 1) then
call external_forcing_s( imin,imax,jmin,jmax,bi,bj,k,mytime,
$mythid )
endif
if (adamsbashforthgs) then
call adams_bashforth2( bi,bj,k,gs,gsnm1,saltstartab,iternb,
$mythid )
endif
if (saltforcing .and. tracforcingoutab .eq. 1) then
call external_forcing_s( imin,imax,jmin,jmax,bi,bj,k,mytime,
$mythid )
endif
end
subroutine adcalc_gt( bi, bj, imin, imax, jmin, jmax, k, kup,
$kdown, xa, ya, maskup, ufld, adufld, vfld, advfld, wfld, adwfld,
$utrans, adutrans, vtrans, advtrans, rtrans, adrtrans, rtranskp1,
$adrtranskp1, kappart, adkappart, adfvert, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_temperature
parameter ( gad_temperature = 1 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
logical adamsbashforth_s
logical adamsbashforth_t
logical adamsbashforthgs
logical adamsbashforthgt
logical saltmultidimadvec
logical saltsom_advection
logical tempmultidimadvec
logical tempsom_advection
common /gad_parm_l/ tempsom_advection, saltsom_advection,
$tempmultidimadvec, saltmultidimadvec, adamsbashforthgt,
$adamsbashforthgs, adamsbashforth_t, adamsbashforth_s
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer dphinhstatus
integer mom_startab
integer nchecklev
integer nhydstartab
integer saltstartab
integer tempstartab
common /restart_i/ nchecklev, tempstartab, saltstartab,
$mom_startab, nhydstartab, dphinhstatus
C==============================================
C declare arguments
C==============================================
double precision adfvert(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adkappart(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kappart(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer myiter
integer mythid
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
logical calcadvection
integer iternb
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
calcadvection = tempadvection .and. ( .not. tempmultidimadvec)
iternb = myiter
if (staggertimestep) then
iternb = myiter-1
endif
if (tempforcing .and. tracforcingoutab .eq. 1) then
call adexternal_forcing_t( bi,bj,k )
endif
if (adamsbashforthgt) then
call adadams_bashforth2( bi,bj,k,adgt,adgtnm1,tempstartab,
$iternb )
endif
if (tempforcing .and. tracforcingoutab .ne. 1) then
call adexternal_forcing_t( bi,bj,k )
endif
call adgad_calc_rhs( bi,bj,imin,imax,jmin,jmax,k,kup,kdown,xa,ya,
$maskup,ufld,adufld,vfld,advfld,wfld,adwfld,utrans,adutrans,vtrans,
$advtrans,rtrans,adrtrans,rtranskp1,adrtranskp1,diffkht,diffk4t,
$kappart,adkappart,gtnm1,adgtnm1,theta,adtheta,dttracerlev,
$gad_temperature,tempadvscheme,tempvertadvscheme,calcadvection,
$tempimplvertadv,adamsbashforth_t,usegmredi,adfvert,adgt,mythid )
end
subroutine mdcalc_gt( bi, bj, imin, imax, jmin, jmax, k, km1, kup,
$ kdown, xa, ya, maskup, ufld, vfld, wfld, utrans, vtrans, rtrans,
$rtranskp1, kappart, fvert, mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_temperature
parameter ( gad_temperature = 1 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
logical adamsbashforth_s
logical adamsbashforth_t
logical adamsbashforthgs
logical adamsbashforthgt
logical saltmultidimadvec
logical saltsom_advection
logical tempmultidimadvec
logical tempsom_advection
common /gad_parm_l/ tempsom_advection, saltsom_advection,
$tempmultidimadvec, saltmultidimadvec, adamsbashforthgt,
$adamsbashforthgs, adamsbashforth_t, adamsbashforth_s
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer dphinhstatus
integer mom_startab
integer nchecklev
integer nhydstartab
integer saltstartab
integer tempstartab
common /restart_i/ nchecklev, tempstartab, saltstartab,
$mom_startab, nhydstartab, dphinhstatus
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
double precision fvert(1-olx:snx+olx,1-oly:sny+oly,2)
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kappart(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer km1
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer myiter
integer mythid
double precision mytime
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
logical calcadvection
integer iternb
C**********************************************
C executable statements of routine
C**********************************************
fvert(1,1,kdown) = fvert(1,1,kdown)
calcadvection = tempadvection .and. ( .not. tempmultidimadvec)
iternb = myiter
if (staggertimestep) then
iternb = myiter-1
endif
call mdgad_calc_rhs( bi,bj,imin,imax,jmin,jmax,k,km1,kup,kdown,xa,
$ya,maskup,ufld,vfld,wfld,utrans,vtrans,rtrans,rtranskp1,diffkht,
$diffk4t,kappart,gtnm1,theta,dttracerlev,gad_temperature,
$tempadvscheme,tempvertadvscheme,calcadvection,tempimplvertadv,
$adamsbashforth_t,usegmredi,usekpp,fvert,gt,mytime,myiter,mythid )
if (tempforcing .and. tracforcingoutab .ne. 1) then
call external_forcing_t( imin,imax,jmin,jmax,bi,bj,k,mytime,
$mythid )
endif
if (adamsbashforthgt) then
call adams_bashforth2( bi,bj,k,gt,gtnm1,tempstartab,iternb,
$mythid )
endif
if (tempforcing .and. tracforcingoutab .eq. 1) then
call external_forcing_t( imin,imax,jmin,jmax,bi,bj,k,mytime,
$mythid )
endif
end
subroutine adcalc_phi_hyd( bi, bj, imin, imax, jmin, jmax, k,
$tfld, adtfld, sfld, adsfld, adphihydf, adphihydc, addphihydx,
$addphihydy, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
double precision half
parameter ( half = 0.5d0 )
integer max_len_fnam
parameter ( max_len_fnam = 512 )
integer max_len_prec
parameter ( max_len_prec = 200 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision one
parameter ( one = 1.d0 )
double precision zero
parameter ( zero = 0.d0 )
C==============================================
C declare common blocks
C==============================================
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
real*8 comlev1_bibj_k_sfld_42h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsfld/ comlev1_bibj_k_sfld_42h
real*8 comlev1_bibj_k_sfld_40h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsfle/ comlev1_bibj_k_sfld_40h
real*8 comlev1_bibj_k_tfld_41h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtfld/ comlev1_bibj_k_tfld_41h
real*8 comlev1_bibj_k_tfld_39h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtfle/ comlev1_bibj_k_tfld_39h
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision atm_cp
double precision atm_kappa
double precision atm_po
double precision atm_rd
double precision atm_rq
double precision celsius2k
integer integr_geopot
integer selectfindrosurf
common /parm_atm/ celsius2k, atm_cp, atm_rd, atm_kappa, atm_rq,
$atm_po, integr_geopot, selectfindrosurf
character*(max_len_fnam) bathyfile
character*(max_len_fnam) buoyancyrelation
character*(max_len_fnam) delrcfile
character*(max_len_fnam) delrfile
character*(max_len_fnam) delxfile
character*(max_len_fnam) delyfile
character*(max_len_fnam) diffkrfile
character*(max_len_fnam) dqdtfile
character*(max_len_fnam) eddypsixfile
character*(max_len_fnam) eddypsiyfile
character*(max_len_fnam) empmrfile
character*(6) eostype
character*(max_len_fnam) horizgridfile
character*(max_len_fnam) hybsigmfile
character*(max_len_fnam) hydrogsaltfile
character*(max_len_fnam) hydrogthetafile
character*(max_len_fnam) lambdasaltfile
character*(max_len_fnam) lambdathetafile
character*(max_len_fnam) mdsiolocaldir
character*(max_len_fnam) meridwindfile
character*(10) pickupsuff
character*(max_len_fnam) ploadfile
character*(max_len_fnam) psurfinitfile
character*(max_len_fnam) rhoreffile
character*(max_len_fnam) saltclimfile
character*(max_len_fnam) saltfluxfile
character*(max_len_fnam) sreffile
character*(max_len_fnam) surfqfile
character*(max_len_fnam) surfqnetfile
character*(max_len_fnam) surfqswfile
character*(max_len_prec/2) the_run_name
character*(max_len_fnam) thetaclimfile
character*(max_len_fnam) topofile
character*(max_len_fnam) treffile
character*(max_len_fnam) uvelinitfile
character*(max_len_fnam) visca4dfile
character*(max_len_fnam) visca4zfile
character*(max_len_fnam) viscahdfile
character*(max_len_fnam) viscahzfile
character*(max_len_fnam) vvelinitfile
character*(max_len_fnam) zonalwindfile
common /parm_c/ buoyancyrelation, eostype, pickupsuff,
$mdsiolocaldir, treffile, sreffile, rhoreffile, delrfile,
$delrcfile, hybsigmfile, delxfile, delyfile, horizgridfile,
$bathyfile, topofile, viscahdfile, viscahzfile, visca4dfile,
$visca4zfile, hydrogthetafile, hydrogsaltfile, diffkrfile,
$zonalwindfile, meridwindfile, thetaclimfile, saltclimfile,
$empmrfile, saltfluxfile, surfqfile, surfqnetfile, surfqswfile,
$lambdathetafile, lambdasaltfile, uvelinitfile, vvelinitfile,
$psurfinitfile, dqdtfile, ploadfile, eddypsixfile, eddypsiyfile,
$the_run_name
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
integer ikey
integer key
common /tamckeys/ key, ikey
C==============================================
C declare arguments
C==============================================
double precision addphihydx(1-olx:snx+olx,1-oly:sny+oly)
double precision addphihydy(1-olx:snx+olx,1-oly:sny+oly)
double precision adphihydc(1-olx:snx+olx,1-oly:sny+oly)
double precision adphihydf(1-olx:snx+olx,1-oly:sny+oly)
double precision adsfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
integer myiter
integer mythid
double precision sfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision tfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision adalpharho(1-olx:snx+olx,1-oly:sny+oly)
double precision adlocalpha
double precision alpharho(1-olx:snx+olx,1-oly:sny+oly)
double precision ddpim
double precision ddpip
double precision ddrloc
double precision drlocm
double precision drlocp
integer i
integer ip1
integer ip2
integer j
integer kkey
double precision localpha
integer max1
integer max2
integer max3
double precision rec_drm
double precision rec_drp
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adalpharho(ip1,ip2) = 0.d0
end do
end do
adlocalpha = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
ikey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
if (mompressureforcing) then
call adcalc_grad_phi_hyd( k,bi,bj,imin,imax,jmin,jmax,adphihydc,
$addphihydx,addphihydy )
endif
call addiags_phi_hyd( k,bi,bj,imin,imax,jmin,jmax,adphihydc )
if (buoyancyrelation .eq. 'OCEANIC') then
if (integr_geopot .eq. 1) then
do j = jmin, jmax
do i = imin, imax
adalpharho(i,j) = adalpharho(i,j)+adphihydf(i,j)*drf(k)*
$gravity*recip_rhoconst
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*half*drf(
$k)*gravity*recip_rhoconst
adphihydf(i,j) = adphihydf(i,j)+adphihydc(i,j)
adphihydc(i,j) = 0.d0
end do
end do
else
drlocm = half*drc(k)
if (k .eq. 1) then
drlocm = rf(k)-rc(k)
endif
if (k .eq. nr) then
drlocp = rc(k)-rf(k+1)
else
drlocp = half*drc(k+1)
endif
do j = jmin, jmax
do i = imin, imax
adalpharho(i,j) = adalpharho(i,j)+adphihydf(i,j)*drlocp*
$gravity*recip_rhoconst
adphihydc(i,j) = adphihydc(i,j)+adphihydf(i,j)
adphihydf(i,j) = 0.d0
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*drlocm*
$gravity*recip_rhoconst
adphihydf(i,j) = adphihydf(i,j)+adphihydc(i,j)
adphihydc(i,j) = 0.d0
end do
end do
endif
if (quasihydrostatic) then
call admom_quasihydrostatic( bi,bj,k,uvel,aduvel,vvel,advvel,
$adalpharho )
endif
if (implicitintgravwave .or. myiter .lt. 0) then
kkey = (ikey-1)*nr+k
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
tfld(ip1,ip2,k,bi,bj) = comlev1_bibj_k_tfld_39h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
sfld(ip1,ip2,k,bi,bj) = comlev1_bibj_k_sfld_40h(ip1,ip2,
$kkey)
end do
end do
call adfind_rho_2d( imin,imax,jmin,jmax,k,tfld(1-olx,1-oly,k,
$bi,bj),adtfld(1-olx,1-oly,k,bi,bj),sfld(1-olx,1-oly,k,bi,bj),
$adsfld(1-olx,1-oly,k,bi,bj),adalpharho,bi,bj )
else
do j = jmin, jmax
do i = imin, imax
adrhoinsitu(i,j,k,bi,bj) = adrhoinsitu(i,j,k,bi,bj)+
$adalpharho(i,j)
adalpharho(i,j) = 0.d0
end do
end do
endif
else if (buoyancyrelation .eq. 'OCEANICP') then
if (implicitintgravwave .or. myiter .lt. 0) then
call find_rho_2d( imin,imax,jmin,jmax,k,tfld(1-olx,1-oly,k,bi,
$bj),sfld(1-olx,1-oly,k,bi,bj),alpharho,k,bi,bj,mythid )
else
do j = jmin, jmax
do i = imin, imax
alpharho(i,j) = rhoinsitu(i,j,k,bi,bj)
end do
end do
endif
if (integr_geopot .eq. 1) then
do j = jmin, jmax
do i = imin, imax
adalpharho(i,j) = adalpharho(i,j)+adphihydf(i,j)*half*drf(
$k)
adphihydc(i,j) = adphihydc(i,j)+adphihydf(i,j)
adphihydf(i,j) = 0.d0
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*ddrloc
adphihydc(i,j) = 0.d0
else
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*half*
$drf(k)
adphihydf(i,j) = adphihydf(i,j)+adphihydc(i,j)
adphihydc(i,j) = 0.d0
endif
end do
end do
else
drlocm = half*drc(k)
if (k .eq. 1) then
drlocm = rf(k)-rc(k)
endif
if (k .eq. nr) then
drlocp = rc(k)-rf(k+1)
else
drlocp = half*drc(k+1)
endif
rec_drm = one/(rf(k)-rc(k))
rec_drp = one/(rc(k)-rf(k+1))
do j = jmin, jmax
do i = imin, imax
adalpharho(i,j) = adalpharho(i,j)+adphihydf(i,j)*drlocp
adphihydc(i,j) = adphihydc(i,j)+adphihydf(i,j)
adphihydf(i,j) = 0.d0
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*(
$rec_drm*drlocm*max(zero,ddrloc)+rec_drp*drlocp*min(zero,ddrloc))
adphihydc(i,j) = 0.d0
else
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*drlocm
adphihydf(i,j) = adphihydf(i,j)+adphihydc(i,j)
adphihydc(i,j) = 0.d0
endif
end do
end do
endif
do j = jmax, jmin, -1
adlocalpha = 0.d0
do i = imax, imin, -1
adlocalpha = 0.d0
localpha = alpharho(i,j)+rhoconst
adlocalpha = adlocalpha-adalpharho(i,j)*maskc(i,j,k,bi,bj)*(
$one/(localpha*localpha))
adalpharho(i,j) = 0.d0
adalpharho(i,j) = adalpharho(i,j)+adlocalpha
adlocalpha = 0.d0
end do
end do
if (implicitintgravwave .or. myiter .lt. 0) then
kkey = (ikey-1)*nr+k
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
tfld(ip1,ip2,k,bi,bj) = comlev1_bibj_k_tfld_41h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
sfld(ip1,ip2,k,bi,bj) = comlev1_bibj_k_sfld_42h(ip1,ip2,
$kkey)
end do
end do
call adfind_rho_2d( imin,imax,jmin,jmax,k,tfld(1-olx,1-oly,k,
$bi,bj),adtfld(1-olx,1-oly,k,bi,bj),sfld(1-olx,1-oly,k,bi,bj),
$adsfld(1-olx,1-oly,k,bi,bj),adalpharho,bi,bj )
else
do j = jmin, jmax
do i = imin, imax
adrhoinsitu(i,j,k,bi,bj) = adrhoinsitu(i,j,k,bi,bj)+
$adalpharho(i,j)
adalpharho(i,j) = 0.d0
end do
end do
endif
else if (buoyancyrelation .eq. 'ATMOSPHERIC') then
if (integr_geopot .eq. 0) then
if (k .eq. 1) then
ddpim = atm_cp*((rf(k)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)
else
ddpim = atm_cp*((rc(k-1)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)*half
endif
if (k .eq. nr) then
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rf(k+1)/atm_po)**
$atm_kappa)
else
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rc(k+1)/atm_po)**
$atm_kappa)*half
endif
do j = jmin, jmax
do i = imin, imax
adalpharho(i,j) = adalpharho(i,j)+adphihydf(i,j)*ddpip
adphihydc(i,j) = adphihydc(i,j)+adphihydf(i,j)
adphihydf(i,j) = 0.d0
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*ddpim
adphihydf(i,j) = adphihydf(i,j)+adphihydc(i,j)
adphihydc(i,j) = 0.d0
end do
end do
else if (integr_geopot .eq. 1) then
ddpim = atm_cp*((rf(k)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rf(k+1)/atm_po)**
$atm_kappa)
do j = jmin, jmax
do i = imin, imax
adalpharho(i,j) = adalpharho(i,j)+adphihydf(i,j)*ddpip
adphihydc(i,j) = adphihydc(i,j)+adphihydf(i,j)
adphihydf(i,j) = 0.d0
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
adalpharho(i,j) = adalpharho(i,j)+2*adphihydc(i,j)*
$ddrloc*recip_drf(k)*ddpim
adphihydc(i,j) = 0.d0
else
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*ddpim
adphihydf(i,j) = adphihydf(i,j)+adphihydc(i,j)
adphihydc(i,j) = 0.d0
endif
end do
end do
else if (integr_geopot .eq. 2 .or. integr_geopot .eq. 3) then
if (k .eq. 1) then
ddpim = atm_cp*((rf(k)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)
else
ddpim = atm_cp*((rc(k-1)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)*half
endif
if (k .eq. nr) then
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rf(k+1)/atm_po)**
$atm_kappa)
else
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rc(k+1)/atm_po)**
$atm_kappa)*half
endif
rec_drm = one/(rf(k)-rc(k))
rec_drp = one/(rc(k)-rf(k+1))
do j = jmin, jmax
do i = imin, imax
adalpharho(i,j) = adalpharho(i,j)+adphihydf(i,j)*ddpip
adphihydc(i,j) = adphihydc(i,j)+adphihydf(i,j)
adphihydf(i,j) = 0.d0
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*(
$rec_drm*ddpim*max(zero,ddrloc)+rec_drp*ddpip*min(zero,ddrloc))
adphihydc(i,j) = 0.d0
else
adalpharho(i,j) = adalpharho(i,j)+adphihydc(i,j)*ddpim
adphihydf(i,j) = adphihydf(i,j)+adphihydc(i,j)
adphihydc(i,j) = 0.d0
endif
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
adsfld(i,j,k,bi,bj) = adsfld(i,j,k,bi,bj)+adalpharho(i,j)*
$maskc(i,j,k,bi,bj)*tfld(i,j,k,bi,bj)*atm_rq
adtfld(i,j,k,bi,bj) = adtfld(i,j,k,bi,bj)+adalpharho(i,j)*
$maskc(i,j,k,bi,bj)*(sfld(i,j,k,bi,bj)*atm_rq+one)
adalpharho(i,j) = 0.d0
end do
end do
endif
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adphihydf(i,j) = 0.d0
end do
end do
endif
end
subroutine mdcalc_phi_hyd( bi, bj, imin, imax, jmin, jmax, k,
$tfld, sfld, phihydf, phihydc, dphihydx, dphihydy, mytime, myiter,
$mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
double precision half
parameter ( half = 0.5d0 )
integer max_len_fnam
parameter ( max_len_fnam = 512 )
integer max_len_prec
parameter ( max_len_prec = 200 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision one
parameter ( one = 1.d0 )
double precision zero
parameter ( zero = 0.d0 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_k_alpharho_43h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadalpharho/ comlev1_bibj_k_alpharho_43h
real*8 comlev1_bibj_k_sfld_42h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsfld/ comlev1_bibj_k_sfld_42h
real*8 comlev1_bibj_k_sfld_40h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsfle/ comlev1_bibj_k_sfld_40h
real*8 comlev1_bibj_k_tfld_41h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtfld/ comlev1_bibj_k_tfld_41h
real*8 comlev1_bibj_k_tfld_39h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtfle/ comlev1_bibj_k_tfld_39h
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision atm_cp
double precision atm_kappa
double precision atm_po
double precision atm_rd
double precision atm_rq
double precision celsius2k
integer integr_geopot
integer selectfindrosurf
common /parm_atm/ celsius2k, atm_cp, atm_rd, atm_kappa, atm_rq,
$atm_po, integr_geopot, selectfindrosurf
character*(max_len_fnam) bathyfile
character*(max_len_fnam) buoyancyrelation
character*(max_len_fnam) delrcfile
character*(max_len_fnam) delrfile
character*(max_len_fnam) delxfile
character*(max_len_fnam) delyfile
character*(max_len_fnam) diffkrfile
character*(max_len_fnam) dqdtfile
character*(max_len_fnam) eddypsixfile
character*(max_len_fnam) eddypsiyfile
character*(max_len_fnam) empmrfile
character*(6) eostype
character*(max_len_fnam) horizgridfile
character*(max_len_fnam) hybsigmfile
character*(max_len_fnam) hydrogsaltfile
character*(max_len_fnam) hydrogthetafile
character*(max_len_fnam) lambdasaltfile
character*(max_len_fnam) lambdathetafile
character*(max_len_fnam) mdsiolocaldir
character*(max_len_fnam) meridwindfile
character*(10) pickupsuff
character*(max_len_fnam) ploadfile
character*(max_len_fnam) psurfinitfile
character*(max_len_fnam) rhoreffile
character*(max_len_fnam) saltclimfile
character*(max_len_fnam) saltfluxfile
character*(max_len_fnam) sreffile
character*(max_len_fnam) surfqfile
character*(max_len_fnam) surfqnetfile
character*(max_len_fnam) surfqswfile
character*(max_len_prec/2) the_run_name
character*(max_len_fnam) thetaclimfile
character*(max_len_fnam) topofile
character*(max_len_fnam) treffile
character*(max_len_fnam) uvelinitfile
character*(max_len_fnam) visca4dfile
character*(max_len_fnam) visca4zfile
character*(max_len_fnam) viscahdfile
character*(max_len_fnam) viscahzfile
character*(max_len_fnam) vvelinitfile
character*(max_len_fnam) zonalwindfile
common /parm_c/ buoyancyrelation, eostype, pickupsuff,
$mdsiolocaldir, treffile, sreffile, rhoreffile, delrfile,
$delrcfile, hybsigmfile, delxfile, delyfile, horizgridfile,
$bathyfile, topofile, viscahdfile, viscahzfile, visca4dfile,
$visca4zfile, hydrogthetafile, hydrogsaltfile, diffkrfile,
$zonalwindfile, meridwindfile, thetaclimfile, saltclimfile,
$empmrfile, saltfluxfile, surfqfile, surfqnetfile, surfqswfile,
$lambdathetafile, lambdasaltfile, uvelinitfile, vvelinitfile,
$psurfinitfile, dqdtfile, ploadfile, eddypsixfile, eddypsiyfile,
$the_run_name
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
integer ikey
integer key
common /tamckeys/ key, ikey
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
double precision dphihydx(1-olx:snx+olx,1-oly:sny+oly)
double precision dphihydy(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
integer k
integer myiter
integer mythid
double precision mytime
double precision phihydc(1-olx:snx+olx,1-oly:sny+oly)
double precision phihydf(1-olx:snx+olx,1-oly:sny+oly)
double precision sfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision tfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision alpharho(1-olx:snx+olx,1-oly:sny+oly)
double precision ddpim
double precision ddpip
double precision ddrloc
double precision drlocm
double precision drlocp
integer i
integer iqa
integer iqb
integer iqc
integer iqd
integer iqe
integer iqf
integer iqg
integer iqh
integer iqi
integer iqj
integer j
integer kkey
double precision localpha
integer max1
integer max2
integer max3
double precision rec_drm
double precision rec_drp
C**********************************************
C executable statements of routine
C**********************************************
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
ikey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
phihydf(i,j) = 0.
end do
end do
endif
if (buoyancyrelation .eq. 'OCEANIC') then
if (implicitintgravwave .or. myiter .lt. 0) then
kkey = (ikey-1)*nr+k
do iqd = 1-oly, sny+oly
do iqc = 1-olx, snx+olx
comlev1_bibj_k_tfld_39h(iqc,iqd,kkey) = tfld(iqc,iqd,k,bi,
$bj)
end do
end do
do iqb = 1-oly, sny+oly
do iqa = 1-olx, snx+olx
comlev1_bibj_k_sfld_40h(iqa,iqb,kkey) = sfld(iqa,iqb,k,bi,
$bj)
end do
end do
call find_rho_2d( imin,imax,jmin,jmax,k,tfld(1-olx,1-oly,k,bi,
$bj),sfld(1-olx,1-oly,k,bi,bj),alpharho,k,bi,bj,mythid )
else
do j = jmin, jmax
do i = imin, imax
alpharho(i,j) = rhoinsitu(i,j,k,bi,bj)
end do
end do
endif
if (quasihydrostatic) then
call mom_quasihydrostatic( bi,bj,k,uvel,vvel,alpharho,mythid )
endif
if (integr_geopot .eq. 1) then
do j = jmin, jmax
do i = imin, imax
phihydc(i,j) = phihydf(i,j)+half*drf(k)*gravity*alpharho(
$i,j)*recip_rhoconst
phihydf(i,j) = phihydf(i,j)+drf(k)*gravity*alpharho(i,j)*
$recip_rhoconst
end do
end do
else
drlocm = half*drc(k)
if (k .eq. 1) then
drlocm = rf(k)-rc(k)
endif
if (k .eq. nr) then
drlocp = rc(k)-rf(k+1)
else
drlocp = half*drc(k+1)
endif
do j = jmin, jmax
do i = imin, imax
phihydc(i,j) = phihydf(i,j)+drlocm*gravity*alpharho(i,j)*
$recip_rhoconst
phihydf(i,j) = phihydc(i,j)+drlocp*gravity*alpharho(i,j)*
$recip_rhoconst
end do
end do
endif
else if (buoyancyrelation .eq. 'OCEANICP') then
if (implicitintgravwave .or. myiter .lt. 0) then
kkey = (ikey-1)*nr+k
do iqj = 1-oly, sny+oly
do iqi = 1-olx, snx+olx
comlev1_bibj_k_tfld_41h(iqi,iqj,kkey) = tfld(iqi,iqj,k,bi,
$bj)
end do
end do
do iqh = 1-oly, sny+oly
do iqg = 1-olx, snx+olx
comlev1_bibj_k_sfld_42h(iqg,iqh,kkey) = sfld(iqg,iqh,k,bi,
$bj)
end do
end do
call find_rho_2d( imin,imax,jmin,jmax,k,tfld(1-olx,1-oly,k,bi,
$bj),sfld(1-olx,1-oly,k,bi,bj),alpharho,k,bi,bj,mythid )
do iqf = 1-oly, sny+oly
do iqe = 1-olx, snx+olx
comlev1_bibj_k_alpharho_43h(iqe,iqf,kkey) = alpharho(iqe,
$iqf)
end do
end do
else
do j = jmin, jmax
do i = imin, imax
alpharho(i,j) = rhoinsitu(i,j,k,bi,bj)
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
localpha = alpharho(i,j)+rhoconst
alpharho(i,j) = maskc(i,j,k,bi,bj)*(one/localpha-
$recip_rhoconst)
end do
end do
if (integr_geopot .eq. 1) then
do j = jmin, jmax
do i = imin, imax
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
phihydc(i,j) = ddrloc*alpharho(i,j)
else
phihydc(i,j) = phihydf(i,j)+half*drf(k)*alpharho(i,j)
endif
phihydf(i,j) = phihydc(i,j)+half*drf(k)*alpharho(i,j)
end do
end do
else
drlocm = half*drc(k)
if (k .eq. 1) then
drlocm = rf(k)-rc(k)
endif
if (k .eq. nr) then
drlocp = rc(k)-rf(k+1)
else
drlocp = half*drc(k+1)
endif
rec_drm = one/(rf(k)-rc(k))
rec_drp = one/(rc(k)-rf(k+1))
do j = jmin, jmax
do i = imin, imax
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
phihydc(i,j) = (max(zero,ddrloc)*rec_drm*drlocm+min(
$zero,ddrloc)*rec_drp*drlocp)*alpharho(i,j)
else
phihydc(i,j) = phihydf(i,j)+drlocm*alpharho(i,j)
endif
phihydf(i,j) = phihydc(i,j)+drlocp*alpharho(i,j)
end do
end do
endif
else if (buoyancyrelation .eq. 'ATMOSPHERIC') then
do j = jmin, jmax
do i = imin, imax
alpharho(i,j) = maskc(i,j,k,bi,bj)*(tfld(i,j,k,bi,bj)*(sfld(
$i,j,k,bi,bj)*atm_rq+one)-tref(k))
end do
end do
if (integr_geopot .eq. 0) then
if (k .eq. 1) then
ddpim = atm_cp*((rf(k)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)
else
ddpim = atm_cp*((rc(k-1)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)*half
endif
if (k .eq. nr) then
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rf(k+1)/atm_po)**
$atm_kappa)
else
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rc(k+1)/atm_po)**
$atm_kappa)*half
endif
do j = jmin, jmax
do i = imin, imax
phihydc(i,j) = phihydf(i,j)+ddpim*alpharho(i,j)
phihydf(i,j) = phihydc(i,j)+ddpip*alpharho(i,j)
end do
end do
else if (integr_geopot .eq. 1) then
ddpim = atm_cp*((rf(k)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rf(k+1)/atm_po)**
$atm_kappa)
do j = jmin, jmax
do i = imin, imax
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
phihydc(i,j) = ddrloc*recip_drf(k)*2.d0*ddpim*alpharho(
$i,j)
else
phihydc(i,j) = phihydf(i,j)+ddpim*alpharho(i,j)
endif
phihydf(i,j) = phihydc(i,j)+ddpip*alpharho(i,j)
end do
end do
else if (integr_geopot .eq. 2 .or. integr_geopot .eq. 3) then
if (k .eq. 1) then
ddpim = atm_cp*((rf(k)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)
else
ddpim = atm_cp*((rc(k-1)/atm_po)**atm_kappa-(rc(k)/atm_po)**
$atm_kappa)*half
endif
if (k .eq. nr) then
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rf(k+1)/atm_po)**
$atm_kappa)
else
ddpip = atm_cp*((rc(k)/atm_po)**atm_kappa-(rc(k+1)/atm_po)**
$atm_kappa)*half
endif
rec_drm = one/(rf(k)-rc(k))
rec_drp = one/(rc(k)-rf(k+1))
do j = jmin, jmax
do i = imin, imax
if (k .eq. ksurfc(i,j,bi,bj)) then
ddrloc = ro_surf(i,j,bi,bj)-rc(k)
phihydc(i,j) = (max(zero,ddrloc)*rec_drm*ddpim+min(zero,
$ddrloc)*rec_drp*ddpip)*alpharho(i,j)
else
phihydc(i,j) = phihydf(i,j)+ddpim*alpharho(i,j)
endif
phihydf(i,j) = phihydc(i,j)+ddpip*alpharho(i,j)
end do
end do
endif
endif
call diags_phi_hyd( k,bi,bj,imin,imax,jmin,jmax,phihydc,mytime,
$myiter,mythid )
if (mompressureforcing) then
call calc_grad_phi_hyd( k,bi,bj,imin,imax,jmin,jmax,phihydc,
$alpharho,tfld,sfld,dphihydx,dphihydy,mytime,myiter,mythid )
endif
end
subroutine adcalc_wsurf_tr( thetafld, adthetafld, saltfld,
$adsaltfld, wvelfld, adwvelfld, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adssurfcor
double precision adtsurfcor
common /adsurf_correc/ adtsurfcor, adssurfcor
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adsaltfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adthetafld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adwvelfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer mythid
double precision saltfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision thetafld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvelfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
double precision adws_mean
double precision adws_tile(nsx,nsy)
double precision adwt_mean
double precision adwt_tile(nsx,nsy)
integer bi
integer bj
integer i
integer ip1
integer ip2
integer j
integer ks
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adws_mean = 0.d0
do ip2 = 1, nsy
do ip1 = 1, nsx
adws_tile(ip1,ip2) = 0.d0
end do
end do
adwt_mean = 0.d0
do ip2 = 1, nsy
do ip1 = 1, nsx
adwt_tile(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
call barrier( mythid )
if (globalarea .gt. 0.) then
if (mythid .eq. 1) then
adws_mean = adws_mean+adssurfcor/globalarea
adssurfcor = 0.d0
adwt_mean = adwt_mean+adtsurfcor/globalarea
adtsurfcor = 0.d0
endif
endif
call global_adsum_tile_rl( adws_tile,adws_mean,mythid )
call global_adsum_tile_rl( adwt_tile,adwt_mean,mythid )
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do j = 1, sny
do i = 1, snx
ks = ksurfc(i,j,bi,bj)
if (ks .le. nr) then
adsaltfld(i,j,ks,bi,bj) = adsaltfld(i,j,ks,bi,bj)+
$adws_tile(bi,bj)*ra(i,j,bi,bj)*wvelfld(i,j,ks,bi,bj)
adwvelfld(i,j,ks,bi,bj) = adwvelfld(i,j,ks,bi,bj)+
$adws_tile(bi,bj)*ra(i,j,bi,bj)*saltfld(i,j,ks,bi,bj)
adthetafld(i,j,ks,bi,bj) = adthetafld(i,j,ks,bi,bj)+
$adwt_tile(bi,bj)*ra(i,j,bi,bj)*wvelfld(i,j,ks,bi,bj)
adwvelfld(i,j,ks,bi,bj) = adwvelfld(i,j,ks,bi,bj)+
$adwt_tile(bi,bj)*ra(i,j,bi,bj)*thetafld(i,j,ks,bi,bj)
endif
end do
end do
adws_tile(bi,bj) = 0.d0
adwt_tile(bi,bj) = 0.d0
end do
end do
adssurfcor = 0.d0
adtsurfcor = 0.d0
end
subroutine adcd_code_scheme( bi, bj, k, addphihydx, addphihydy,
$adgufld, adgvfld, adgucor, adgvcor )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer snx
parameter ( snx = 45 )
integer imax
parameter ( imax = snx+olx-1 )
integer imin
parameter ( imin = 1-olx+1 )
integer oly
parameter ( oly = 2 )
integer sny
parameter ( sny = 20 )
integer jmax
parameter ( jmax = sny+oly-1 )
integer jmin
parameter ( jmin = 1-oly+1 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer nx
parameter ( nx = snx*nsx*npx )
integer ny
parameter ( ny = sny*nsy*npy )
C==============================================
C declare common blocks
C==============================================
double precision adetanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_cd/ aduveld, advveld, adetanm1, adunm1, advnm1
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
double precision bo_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision phi0surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_bo(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision topoz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /surf_fixed/ bo_surf, recip_bo, topoz, phi0surf
C==============================================
C declare arguments
C==============================================
double precision addphihydx(1-olx:snx+olx,1-oly:sny+oly)
double precision addphihydy(1-olx:snx+olx,1-oly:sny+oly)
double precision adgucor(1-olx:snx+olx,1-oly:sny+oly)
double precision adgufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvcor(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
double precision ab05
double precision ab15
double precision adaf(1-olx:snx+olx,1-oly:sny+oly)
double precision adpf(1-olx:snx+olx,1-oly:sny+oly)
double precision advf(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
double precision phxfac
double precision phyfac
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adaf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adpf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advf(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
ab15 = 1.5d0+epsab_cd
ab05 = (-0.5d0)-epsab_cd
if (staggertimestep) then
phxfac = pffacmom
phyfac = pffacmom
else
phxfac = 0.
phyfac = 0.
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+advnm1(i,j,k,bi,bj)
advnm1(i,j,k,bi,bj) = 0.d0
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+adunm1(i,j,k,bi,bj)
adunm1(i,j,k,bi,bj) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin, imax
aduveld(i,j,k,bi,bj) = aduveld(i,j,k,bi,bj)-0.5d0*adgvcor(i,j)
$*(fcori(i,j,bi,bj)+fcori(i,j-1,bi,bj))*cffacmom
adgvcor(i,j) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin, imax
adunm1(i+1,j-1,k,bi,bj) = adunm1(i+1,j-1,k,bi,bj)+0.25d0*
$aduveld(i,j,k,bi,bj)*(1.d0-rcd)*ab05*masks(i,j,k,bi,bj)
adunm1(i,j-1,k,bi,bj) = adunm1(i,j-1,k,bi,bj)+0.25d0*aduveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab05*masks(i,j,k,bi,bj)
adunm1(i+1,j,k,bi,bj) = adunm1(i+1,j,k,bi,bj)+0.25d0*aduveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab05*masks(i,j,k,bi,bj)
adunm1(i,j,k,bi,bj) = adunm1(i,j,k,bi,bj)+0.25d0*aduveld(i,j,
$k,bi,bj)*(1.d0-rcd)*ab05*masks(i,j,k,bi,bj)
aduvel(i+1,j-1,k,bi,bj) = aduvel(i+1,j-1,k,bi,bj)+0.25d0*
$aduveld(i,j,k,bi,bj)*(1.d0-rcd)*ab15*masks(i,j,k,bi,bj)
aduvel(i,j-1,k,bi,bj) = aduvel(i,j-1,k,bi,bj)+0.25d0*aduveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab15*masks(i,j,k,bi,bj)
aduvel(i+1,j,k,bi,bj) = aduvel(i+1,j,k,bi,bj)+0.25d0*aduveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab15*masks(i,j,k,bi,bj)
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+0.25d0*aduveld(i,j,
$k,bi,bj)*(1.d0-rcd)*ab15*masks(i,j,k,bi,bj)
aduveld(i,j,k,bi,bj) = aduveld(i,j,k,bi,bj)*rcd*masks(i,j,k,
$bi,bj)
end do
end do
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+aduveld(i,j,k,bi,bj)*deltatmom
end do
end do
do j = jmin, jmax
do i = imin, imax
adaf(i+1,j-1) = adaf(i+1,j-1)+0.25d0*advf(i,j)*masks(i,j,k,bi,
$bj)
adaf(i,j-1) = adaf(i,j-1)+0.25d0*advf(i,j)*masks(i,j,k,bi,bj)
adaf(i+1,j) = adaf(i+1,j)+0.25d0*advf(i,j)*masks(i,j,k,bi,bj)
adaf(i,j) = adaf(i,j)+0.25d0*advf(i,j)*masks(i,j,k,bi,bj)
advnm1(i,j,k,bi,bj) = advnm1(i,j,k,bi,bj)+0.5d0*advf(i,j)*(
$fcori(i,j,bi,bj)+fcori(i,j-1,bi,bj))*ab05
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+0.5d0*advf(i,j)*(
$fcori(i,j,bi,bj)+fcori(i,j-1,bi,bj))*ab15
advf(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx+1, snx+olx
addphihydx(i,j) = addphihydx(i,j)-adaf(i,j)*phxfac*maskw(i,j,
$k,bi,bj)
adgufld(i,j) = adgufld(i,j)+adaf(i,j)*maskw(i,j,k,bi,bj)
adpf(i-1,j) = adpf(i-1,j)+adaf(i,j)*recip_dxc(i,j,bi,bj)*
$maskw(i,j,k,bi,bj)
adpf(i,j) = adpf(i,j)-adaf(i,j)*recip_dxc(i,j,bi,bj)*maskw(i,
$j,k,bi,bj)
adaf(i,j) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin, imax
advveld(i,j,k,bi,bj) = advveld(i,j,k,bi,bj)+0.5d0*adgucor(i,j)
$*(fcori(i,j,bi,bj)+fcori(i-1,j,bi,bj))*cffacmom
adgucor(i,j) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin, imax
advnm1(i-1,j+1,k,bi,bj) = advnm1(i-1,j+1,k,bi,bj)+0.25d0*
$advveld(i,j,k,bi,bj)*(1.d0-rcd)*ab05*maskw(i,j,k,bi,bj)
advnm1(i,j+1,k,bi,bj) = advnm1(i,j+1,k,bi,bj)+0.25d0*advveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab05*maskw(i,j,k,bi,bj)
advnm1(i-1,j,k,bi,bj) = advnm1(i-1,j,k,bi,bj)+0.25d0*advveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab05*maskw(i,j,k,bi,bj)
advnm1(i,j,k,bi,bj) = advnm1(i,j,k,bi,bj)+0.25d0*advveld(i,j,
$k,bi,bj)*(1.d0-rcd)*ab05*maskw(i,j,k,bi,bj)
advvel(i-1,j+1,k,bi,bj) = advvel(i-1,j+1,k,bi,bj)+0.25d0*
$advveld(i,j,k,bi,bj)*(1.d0-rcd)*ab15*maskw(i,j,k,bi,bj)
advvel(i,j+1,k,bi,bj) = advvel(i,j+1,k,bi,bj)+0.25d0*advveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab15*maskw(i,j,k,bi,bj)
advvel(i-1,j,k,bi,bj) = advvel(i-1,j,k,bi,bj)+0.25d0*advveld(
$i,j,k,bi,bj)*(1.d0-rcd)*ab15*maskw(i,j,k,bi,bj)
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+0.25d0*advveld(i,j,
$k,bi,bj)*(1.d0-rcd)*ab15*maskw(i,j,k,bi,bj)
advveld(i,j,k,bi,bj) = advveld(i,j,k,bi,bj)*rcd*maskw(i,j,k,
$bi,bj)
end do
end do
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+advveld(i,j,k,bi,bj)*deltatmom
end do
end do
do j = jmin, jmax
do i = imin, imax
adaf(i-1,j+1) = adaf(i-1,j+1)+0.25d0*advf(i,j)*maskw(i,j,k,bi,
$bj)
adaf(i,j+1) = adaf(i,j+1)+0.25d0*advf(i,j)*maskw(i,j,k,bi,bj)
adaf(i-1,j) = adaf(i-1,j)+0.25d0*advf(i,j)*maskw(i,j,k,bi,bj)
adaf(i,j) = adaf(i,j)+0.25d0*advf(i,j)*maskw(i,j,k,bi,bj)
adunm1(i,j,k,bi,bj) = adunm1(i,j,k,bi,bj)-0.5d0*advf(i,j)*(
$fcori(i,j,bi,bj)+fcori(i-1,j,bi,bj))*ab05
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)-0.5d0*advf(i,j)*(
$fcori(i,j,bi,bj)+fcori(i-1,j,bi,bj))*ab15
advf(i,j) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
addphihydy(i,j) = addphihydy(i,j)-adaf(i,j)*phyfac*masks(i,j,
$k,bi,bj)
adgvfld(i,j) = adgvfld(i,j)+adaf(i,j)*masks(i,j,k,bi,bj)
adpf(i,j-1) = adpf(i,j-1)+adaf(i,j)*recip_dyc(i,j,bi,bj)*
$masks(i,j,k,bi,bj)
adpf(i,j) = adpf(i,j)-adaf(i,j)*recip_dyc(i,j,bi,bj)*masks(i,
$j,k,bi,bj)
adaf(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+adpf(i,j)*bo_surf(i,j,
$bi,bj)*ab15
adetanm1(i,j,bi,bj) = adetanm1(i,j,bi,bj)+adpf(i,j)*bo_surf(i,
$j,bi,bj)*ab05
adpf(i,j) = 0.d0
end do
end do
end
subroutine adconvective_adjustment( bi, bj, mytime, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
real*8 comlev1_bibj_k_rhok_50h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadrhok/ comlev1_bibj_k_rhok_50h
real*8 comlev1_bibj_k_rhokm1_49h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadrhokm1/ comlev1_bibj_k_rhokm1_49h
real*8 comlev1_bibj_k_salt_48h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsalt/ comlev1_bibj_k_salt_48h
real*8 comlev1_bibj_k_salt_45h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsalu/ comlev1_bibj_k_salt_45h
real*8 comlev1_bibj_k_theta_47h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadthetb/ comlev1_bibj_k_theta_47h
real*8 comlev1_bibj_k_theta_44h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadthetc/ comlev1_bibj_k_theta_44h
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
integer ikey
integer key
common /tamckeys/ key, ikey
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision adrhok(1-olx:snx+olx,1-oly:sny+oly)
double precision adrhokm1(1-olx:snx+olx,1-oly:sny+oly)
double precision convectcount(1-olx:snx+olx,1-oly:sny+oly,nr)
integer deltak
integer help_h
integer help_j
logical help_k
integer imax
integer imin
integer ip1
integer ip2
integer jmax
integer jmin
integer k
integer kbottom
integer kdir
integer kkey
integer ktop
integer max1
integer max2
integer max3
double precision rhok(1-olx:snx+olx,1-oly:sny+oly)
double precision rhokm1(1-olx:snx+olx,1-oly:sny+oly)
double precision weighta(1-olx:snx+olx,1-oly:sny+oly)
double precision weightb(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare external procedures and functions
C==============================================
logical different_multiple
external different_multiple
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrhok(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrhokm1(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
help_k = different_multiple(cadjfreq,mytime,deltatclock)
if (help_k) then
imin = 1-olx
imax = snx+olx
jmin = 1-oly
jmax = sny+oly
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
ikey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
if (rksign*gravitysign .gt. 0.) then
ktop = 2
kbottom = nr
kdir = 1
deltak = -1
else
ktop = nr
kbottom = 2
kdir = -1
deltak = 0
endif
do k = ktop+kdir*(int((kbottom-ktop+kdir)/kdir)-1), ktop, -kdir
kkey = (ikey-1)*nr+k
help_h = k+deltak
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,k,bi,bj) = comlev1_bibj_k_theta_47h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,k,bi,bj) = comlev1_bibj_k_salt_48h(ip1,ip2,
$kkey)
end do
end do
help_j = k+deltak
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
rhokm1(ip1,ip2) = comlev1_bibj_k_rhokm1_49h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
rhok(ip1,ip2) = comlev1_bibj_k_rhok_50h(ip1,ip2,kkey)
end do
end do
call convective_weights( bi,bj,k,rhokm1,rhok,weighta,weightb,
$convectcount,mythid )
call adconvectively_mixtracer( bi,bj,k,weighta,weightb,adsalt
$)
call adconvectively_mixtracer( bi,bj,k,weighta,weightb,
$adtheta )
call adfind_rho_2d( imin,imax,jmin,jmax,help_j,theta(1-olx,1-
$oly,k,bi,bj),adtheta(1-olx,1-oly,k,bi,bj),salt(1-olx,1-oly,k,bi,
$bj),adsalt(1-olx,1-oly,k,bi,bj),adrhok,bi,bj )
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,k-1,bi,bj) = comlev1_bibj_k_theta_44h(ip1,
$ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,k-1,bi,bj) = comlev1_bibj_k_salt_45h(ip1,ip2,
$kkey)
end do
end do
call adfind_rho_2d( imin,imax,jmin,jmax,help_h,theta(1-olx,1-
$oly,k-1,bi,bj),adtheta(1-olx,1-oly,k-1,bi,bj),salt(1-olx,1-oly,k-
$1,bi,bj),adsalt(1-olx,1-oly,k-1,bi,bj),adrhokm1,bi,bj )
end do
endif
end
subroutine mdconvective_adjustment( bi, bj, mytime, myiter,
$mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_k_convectcount_46h(1-olx:snx+olx,1-oly:sny+
$oly,1800)
common /cadconvectcount/ comlev1_bibj_k_convectcount_46h
real*8 comlev1_bibj_convectcount_3h(1-olx:snx+olx,1-oly:sny+oly,
$nr,120)
common /cadconvectcounu/ comlev1_bibj_convectcount_3h
real*8 comlev1_bibj_k_rhok_50h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadrhok/ comlev1_bibj_k_rhok_50h
real*8 comlev1_bibj_k_rhokm1_49h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadrhokm1/ comlev1_bibj_k_rhokm1_49h
real*8 comlev1_bibj_k_salt_48h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsalt/ comlev1_bibj_k_salt_48h
real*8 comlev1_bibj_k_salt_45h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsalu/ comlev1_bibj_k_salt_45h
real*8 comlev1_bibj_salt_2h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadsalv/ comlev1_bibj_salt_2h
real*8 comlev1_bibj_k_theta_47h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadthetb/ comlev1_bibj_k_theta_47h
real*8 comlev1_bibj_k_theta_44h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadthetc/ comlev1_bibj_k_theta_44h
real*8 comlev1_bibj_theta_1h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadthetd/ comlev1_bibj_theta_1h
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
integer ikey
integer key
common /tamckeys/ key, ikey
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision convectcount(1-olx:snx+olx,1-oly:sny+oly,nr)
integer deltak
integer help_h
integer help_i
integer help_j
logical help_k
integer i
integer imax
integer imin
integer iq0
integer iq1
integer iq2
integer iq3
integer iq4
integer iq5
integer iq6
integer iq7
integer iq8
integer iq9
integer iqo
integer iqp
integer iqq
integer iqr
integer iqs
integer iqt
integer iqu
integer iqv
integer iqw
integer iqx
integer iqy
integer iqz
integer ira
integer j
integer jmax
integer jmin
integer k
integer kbottom
integer kdir
integer kkey
integer ktop
integer max1
integer max2
integer max3
double precision rhok(1-olx:snx+olx,1-oly:sny+oly)
double precision rhokm1(1-olx:snx+olx,1-oly:sny+oly)
double precision weighta(1-olx:snx+olx,1-oly:sny+oly)
double precision weightb(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare external procedures and functions
C==============================================
logical different_multiple
external different_multiple
C**********************************************
C executable statements of routine
C**********************************************
help_k = different_multiple(cadjfreq,mytime,deltatclock)
if (help_k) then
imin = 1-olx
imax = snx+olx
jmin = 1-oly
jmax = sny+oly
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
convectcount(i,j,k) = 0.
end do
end do
end do
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
ikey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
if (rksign*gravitysign .gt. 0.) then
ktop = 2
kbottom = nr
kdir = 1
deltak = -1
else
ktop = nr
kbottom = 2
kdir = -1
deltak = 0
endif
do ira = 1, nr
do iq9 = 1-oly, sny+oly
do iq8 = 1-olx, snx+olx
comlev1_bibj_theta_1h(iq8,iq9,ira,ikey) = theta(iq8,iq9,
$ira,bi,bj)
end do
end do
end do
do iq7 = 1, nr
do iq6 = 1-oly, sny+oly
do iq5 = 1-olx, snx+olx
comlev1_bibj_salt_2h(iq5,iq6,iq7,ikey) = salt(iq5,iq6,iq7,
$bi,bj)
end do
end do
end do
do iq4 = 1, nr
do iq3 = 1-oly, sny+oly
do iq2 = 1-olx, snx+olx
comlev1_bibj_convectcount_3h(iq2,iq3,iq4,ikey) =
$convectcount(iq2,iq3,iq4)
end do
end do
end do
do k = ktop, kbottom, kdir
kkey = (ikey-1)*nr+k
do iq1 = 1-oly, sny+oly
do iq0 = 1-olx, snx+olx
comlev1_bibj_k_theta_44h(iq0,iq1,kkey) = theta(iq0,iq1,k-
$1,bi,bj)
end do
end do
do iqz = 1-oly, sny+oly
do iqy = 1-olx, snx+olx
comlev1_bibj_k_salt_45h(iqy,iqz,kkey) = salt(iqy,iqz,k-1,
$bi,bj)
end do
end do
do iqx = 1-oly, sny+oly
do iqw = 1-olx, snx+olx
comlev1_bibj_k_convectcount_46h(iqw,iqx,kkey) =
$convectcount(iqw,iqx,k-1)
end do
end do
help_h = k+deltak
call find_rho_2d( imin,imax,jmin,jmax,help_h,theta(1-olx,1-
$oly,k-1,bi,bj),salt(1-olx,1-oly,k-1,bi,bj),rhokm1,help_i,bi,bj,
$mythid )
do iqv = 1-oly, sny+oly
do iqu = 1-olx, snx+olx
comlev1_bibj_k_theta_47h(iqu,iqv,kkey) = theta(iqu,iqv,k,
$bi,bj)
end do
end do
do iqt = 1-oly, sny+oly
do iqs = 1-olx, snx+olx
comlev1_bibj_k_salt_48h(iqs,iqt,kkey) = salt(iqs,iqt,k,bi,
$bj)
end do
end do
help_j = k+deltak
call find_rho_2d( imin,imax,jmin,jmax,help_j,theta(1-olx,1-
$oly,k,bi,bj),salt(1-olx,1-oly,k,bi,bj),rhok,k,bi,bj,mythid )
do iqr = 1-oly, sny+oly
do iqq = 1-olx, snx+olx
comlev1_bibj_k_rhokm1_49h(iqq,iqr,kkey) = rhokm1(iqq,iqr)
end do
end do
do iqp = 1-oly, sny+oly
do iqo = 1-olx, snx+olx
comlev1_bibj_k_rhok_50h(iqo,iqp,kkey) = rhok(iqo,iqp)
end do
end do
call convective_weights( bi,bj,k,rhokm1,rhok,weighta,weightb,
$convectcount,mythid )
call convectively_mixtracer( bi,bj,k,weighta,weightb,theta,
$mythid )
call convectively_mixtracer( bi,bj,k,weighta,weightb,salt,
$mythid )
end do
endif
end
subroutine adconvectively_mixtracer( bi, bj, k, weighta, weightb,
$adtracer )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision weighta(1-olx:snx+olx,1-oly:sny+oly)
double precision weightb(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision addeltrac
integer i
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
addeltrac = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly, 1-oly, -1
addeltrac = 0.d0
do i = snx+olx, 1-olx, -1
addeltrac = 0.d0
addeltrac = addeltrac-adtracer(i,j,k,bi,bj)*weightb(i,j)
addeltrac = addeltrac+adtracer(i,j,k-1,bi,bj)*weighta(i,j)
adtracer(i,j,k-1,bi,bj) = adtracer(i,j,k-1,bi,bj)-addeltrac
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+addeltrac
addeltrac = 0.d0
end do
end do
end
subroutine adcorrection_step( bi, bj, imin, imax, jmin, jmax, k,
$adphisurfx, adphisurfy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adphisurfx(1-olx:snx+olx,1-oly:sny+oly)
double precision adphisurfy(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
double precision psfac
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
psfac = pffacmom*implicsurfpress*recip_deepfacc(k)*recip_rhofacc(
$k)
do j = jmin, jmax
do i = imin, imax
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)+advvel(i,j,k,bi,bj)*
$masks(i,j,k,bi,bj)
adphisurfy(i,j) = adphisurfy(i,j)-advvel(i,j,k,bi,bj)*
$deltatmom*psfac*masks(i,j,k,bi,bj)
advvel(i,j,k,bi,bj) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin, imax
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)+aduvel(i,j,k,bi,bj)*
$maskw(i,j,k,bi,bj)
adphisurfx(i,j) = adphisurfx(i,j)-aduvel(i,j,k,bi,bj)*
$deltatmom*psfac*maskw(i,j,k,bi,bj)
aduvel(i,j,k,bi,bj) = 0.d0
end do
end do
end
subroutine adcost_accumulate_mean( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adcmeantheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /adcost_mean_r/ adcmeantheta
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision lastinterval
common /cost_param_r/ lastinterval
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
integer i
integer ithi
integer itlo
integer j
integer jthi
integer jtlo
integer k
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
do bj = jtlo, jthi
do bi = itlo, ithi
do k = 1, nr
do j = 1, sny
do i = 1, snx
adtheta(i,j,k,bi,bj) = adtheta(i,j,k,bi,bj)+
$adcmeantheta(i,j,k,bi,bj)/lastinterval*deltatclock
end do
end do
end do
end do
end do
end
subroutine adcost_final( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adobjf_hflux_tut(nsx,nsy)
double precision adobjf_temp_tut(nsx,nsy)
common /adcost_objf/ adobjf_hflux_tut, adobjf_temp_tut
double precision adfc
common /adcost_r/ adfc
double precision mult_atl
double precision mult_eflux
double precision mult_entropy
double precision mult_hflux_tut
double precision mult_t_misfit
double precision mult_temp_tut
double precision mult_test
double precision mult_tracer
double precision multetan
double precision multsalt
double precision multtheta
double precision multuvel
double precision multvvel
common /cost_aux_r/ mult_atl, mult_test, mult_tracer,
$mult_entropy, mult_t_misfit, mult_eflux, multtheta, multsalt,
$multuvel, multvvel, multetan, mult_hflux_tut, mult_temp_tut
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
integer ithi
integer itlo
integer jthi
integer jtlo
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
call global_adsum_r8( adfc,mythid )
do bj = jtlo, jthi
do bi = itlo, ithi
adobjf_hflux_tut(bi,bj) = adobjf_hflux_tut(bi,bj)+adfc*
$mult_hflux_tut
adobjf_temp_tut(bi,bj) = adobjf_temp_tut(bi,bj)+adfc*
$mult_temp_tut
end do
end do
call adcost_temp( mythid )
call adcost_hflux( mythid )
end
subroutine adcost_hflux( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adobjf_hflux_tut(nsx,nsy)
double precision adobjf_temp_tut(nsx,nsy)
common /adcost_objf/ adobjf_hflux_tut, adobjf_temp_tut
double precision adqnetm(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /admean_qnet/ adqnetm
double precision whfluxm(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /cost_weights_r/ whfluxm
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision qnetm(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /mean_qnet/ qnetm
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
double precision adlocfc
integer bi
integer bj
integer i
integer j
double precision tmpc
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adlocfc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
tmpc = 0.d0
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do j = 1, sny
do i = 1, snx
tmpc = tmpc+maskc(i,j,1,bi,bj)
end do
end do
end do
end do
call global_sum_r8( tmpc,mythid )
if (tmpc .gt. 0.) then
tmpc = 1.d0/tmpc
endif
do bj = mybyhi(mythid), mybylo(mythid), -1
adlocfc = 0.d0
do bi = mybxhi(mythid), mybxlo(mythid), -1
adlocfc = 0.d0
adlocfc = adlocfc+adobjf_hflux_tut(bi,bj)
adobjf_hflux_tut(bi,bj) = 0.d0
do j = 1, sny
do i = 1, snx
adqnetm(i,j,bi,bj) = adqnetm(i,j,bi,bj)+2*adlocfc*tmpc*
$maskc(i,j,1,bi,bj)*whfluxm(i,j,bi,bj)*qnetm(i,j,bi,bj)
end do
end do
adlocfc = 0.d0
end do
end do
end
subroutine adcost_init_varia
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adcmeantheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /adcost_mean_r/ adcmeantheta
double precision adfc
common /adcost_r/ adfc
C==============================================
C declare local variables
C==============================================
integer ip1
integer ip2
integer ip3
integer ip4
integer ip5
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcmeantheta(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
adfc = 0.d0
end
subroutine adcost_temp( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adcmeantheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /adcost_mean_r/ adcmeantheta
double precision adobjf_hflux_tut(nsx,nsy)
double precision adobjf_temp_tut(nsx,nsy)
common /adcost_objf/ adobjf_hflux_tut, adobjf_temp_tut
double precision cmeantheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision cmeanthetauvel(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision cmeanthetavvel(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision cmeanuvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision cmeanvvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /cost_mean_r/ cmeantheta, cmeanuvel, cmeanvvel,
$cmeanthetauvel, cmeanthetavvel
double precision wdiffkr(nr,nsx,nsy)
double precision wedtaux(nr,nsx,nsy)
double precision wedtauy(nr,nsx,nsy)
double precision wetan(snx,sny,nsx,nsy)
double precision wkapgm(nr,nsx,nsy)
double precision wkapredi(nr,nsx,nsy)
double precision wsalt(nr,nsx,nsy)
double precision wtheta(nr,nsx,nsy)
double precision wuvvel(nr,nsx,nsy)
common /ctrl_weights_dummy_r/ wtheta, wsalt, wuvvel, wetan,
$wdiffkr, wkapgm, wkapredi, wedtaux, wedtauy
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
double precision adlocfc
integer bi
integer bj
integer i
integer j
integer k
integer nk
double precision thetalev(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision tmp
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adlocfc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
nk = 2
call read_fld_xyz_rl( 'lev_t_an.bin',' ',thetalev,0,mythid )
tmp = 0.d0
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do k = 1, nk
do j = 1, sny
do i = 1, snx
tmp = tmp+maskc(i,j,k,bi,bj)
end do
end do
end do
end do
end do
call global_sum_r8( tmp,mythid )
if (tmp .gt. 0.) then
tmp = 1.d0/tmp
endif
do bj = mybyhi(mythid), mybylo(mythid), -1
adlocfc = 0.d0
do bi = mybxhi(mythid), mybxlo(mythid), -1
adlocfc = 0.d0
adlocfc = adlocfc+adobjf_temp_tut(bi,bj)
adobjf_temp_tut(bi,bj) = 0.d0
do k = 1, nk
do j = 1, sny
do i = 1, snx
adcmeantheta(i,j,k,bi,bj) = adcmeantheta(i,j,k,bi,bj)+2*
$adlocfc*tmp*maskc(i,j,k,bi,bj)*wtheta(k,bi,bj)*(cmeantheta(i,j,k,
$bi,bj)-thetalev(i,j,k,bi,bj))
end do
end do
end do
adlocfc = 0.d0
end do
end do
end
subroutine adcost_tile( mytime, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
C==============================================
C declare common blocks
C==============================================
double precision lastinterval
common /cost_param_r/ lastinterval
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
double precision mytime
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (mytime .gt. endtime-lastinterval) then
call adcost_accumulate_mean( mythid )
endif
end
subroutine mdcost_tile( mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_theta_1h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadtheta/ comlev1_theta_1h
real*8 comlev1_uvel_2h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /caduvel/ comlev1_uvel_2h
real*8 comlev1_vvel_3h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadvvel/ comlev1_vvel_3h
double precision lastinterval
common /cost_param_r/ lastinterval
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer iqa
integer iqb
integer iqc
integer iqd
integer iqe
integer iqf
integer iqg
integer iqh
integer iqi
integer iqj
C**********************************************
C executable statements of routine
C**********************************************
do iqj = 1, nsy
do iqi = 1, nsx
do iqh = 1, nr
do iqg = 1-oly, sny+oly
do iqf = 1-olx, snx+olx
comlev1_theta_1h(iqf,iqg,iqh,iqi,iqj,ikey_dynamics) =
$theta(iqf,iqg,iqh,iqi,iqj)
end do
end do
end do
end do
end do
do iqe = 1, nsy
do iqd = 1, nsx
do iqc = 1, nr
do iqb = 1-oly, sny+oly
do iqa = 1-olx, snx+olx
comlev1_uvel_2h(iqa,iqb,iqc,iqd,iqe,ikey_dynamics) =
$uvel(iqa,iqb,iqc,iqd,iqe)
end do
end do
end do
end do
end do
do iqe = 1, nsy
do iqd = 1, nsx
do iqc = 1, nr
do iqb = 1-oly, sny+oly
do iqa = 1-olx, snx+olx
comlev1_vvel_3h(iqa,iqb,iqc,iqd,iqe,ikey_dynamics) =
$vvel(iqa,iqb,iqc,iqd,iqe)
end do
end do
end do
end do
end do
if (mytime .gt. endtime-lastinterval) then
call cost_accumulate_mean( mythid )
endif
end
subroutine adctrl_map_forcing( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_len_fnam
parameter ( max_len_fnam = 512 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adtmpfld2d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adcontrolvars_r/ adtmpfld2d
double precision adqnetm(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /admean_qnet/ adqnetm
character*(max_len_fnam) xx_apressure_file
character*(max_len_fnam) xx_aqh_file
character*(max_len_fnam) xx_atemp_file
character*(max_len_fnam) xx_bottomdrag_file
character*(max_len_fnam) xx_depth_file
character*(max_len_fnam) xx_diffkr_file
character*(max_len_fnam) xx_edtaux_file
character*(max_len_fnam) xx_edtauy_file
character*(max_len_fnam) xx_efluxp_file
character*(max_len_fnam) xx_efluxy_file
character*(max_len_fnam) xx_etan_file
character*(max_len_fnam) xx_evap_file
character*(max_len_fnam) xx_gen2d_file
character*(max_len_fnam) xx_gen3d_file
character*(max_len_fnam) xx_hflux_file
character*(max_len_fnam) xx_hfluxm_file
character*(max_len_fnam) xx_kapgm_file
character*(max_len_fnam) xx_kapredi_file
character*(max_len_fnam) xx_lwdown_file
character*(max_len_fnam) xx_lwflux_file
character*(max_len_fnam) xx_obcse_file
character*(max_len_fnam) xx_obcsn_file
character*(max_len_fnam) xx_obcss_file
character*(max_len_fnam) xx_obcsw_file
character*(max_len_fnam) xx_precip_file
character*(max_len_fnam) xx_relaxsss_file
character*(max_len_fnam) xx_relaxsst_file
character*(max_len_fnam) xx_runoff_file
character*(max_len_fnam) xx_salt_file
character*(max_len_fnam) xx_salt_ini_fin_file
character*(max_len_fnam) xx_sflux_file
character*(max_len_fnam) xx_siarea_file
character*(max_len_fnam) xx_siheff_file
character*(max_len_fnam) xx_sihsnow_file
character*(max_len_fnam) xx_snowprecip_file
character*(max_len_fnam) xx_sss_file
character*(max_len_fnam) xx_sst_file
character*(max_len_fnam) xx_swdown_file
character*(max_len_fnam) xx_swflux_file
character*(max_len_fnam) xx_tauu_file
character*(max_len_fnam) xx_tauv_file
character*(max_len_fnam) xx_theta_file
character*(max_len_fnam) xx_theta_ini_fin_file
character*(max_len_fnam) xx_tr1_file
character*(max_len_fnam) xx_uvel_file
character*(max_len_fnam) xx_uwind_file
character*(max_len_fnam) xx_vvel_file
character*(max_len_fnam) xx_vwind_file
common /controlfiles_c/ xx_theta_file, xx_salt_file,
$xx_hflux_file, xx_sflux_file, xx_tauu_file, xx_tauv_file,
$xx_atemp_file, xx_aqh_file, xx_precip_file, xx_swflux_file,
$xx_swdown_file, xx_lwflux_file, xx_lwdown_file, xx_evap_file,
$xx_snowprecip_file, xx_apressure_file, xx_runoff_file,
$xx_uwind_file, xx_vwind_file, xx_obcsn_file, xx_obcss_file,
$xx_obcsw_file, xx_obcse_file, xx_diffkr_file, xx_kapgm_file,
$xx_kapredi_file, xx_tr1_file, xx_sst_file, xx_sss_file,
$xx_depth_file, xx_efluxy_file, xx_efluxp_file, xx_bottomdrag_file,
$ xx_edtaux_file, xx_edtauy_file, xx_uvel_file, xx_vvel_file,
$xx_etan_file, xx_relaxsst_file, xx_relaxsss_file,
$xx_theta_ini_fin_file, xx_salt_ini_fin_file, xx_siarea_file,
$xx_siheff_file, xx_sihsnow_file, xx_gen2d_file, xx_gen3d_file,
$xx_hfluxm_file
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
integer iprint
integer nfunc
integer numiter
integer nupdate
integer nvars
integer optimcycle
common /optiparm_i/ optimcycle, nvars, numiter, nfunc, iprint,
$nupdate
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
logical doglobalread
character*(80) fnamehfluxm
integer i
integer il
integer imax
integer imin
integer ithi
integer itlo
integer j
integer jmax
integer jmin
integer jthi
integer jtlo
logical ladinit
C==============================================
C declare external procedures and functions
C==============================================
integer ilnblnk
external ilnblnk
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
jtlo = mybylo(mythid)
jthi = mybyhi(mythid)
itlo = mybxlo(mythid)
ithi = mybxhi(mythid)
jmin = 1
jmax = sny
imin = 1
imax = snx
doglobalread = .false.
ladinit = .false.
il = ilnblnk(xx_hfluxm_file)
write(unit=fnamehfluxm(1:80),fmt='(2a,i10.10)') xx_hfluxm_file(1:
$il),'.',optimcycle
call adexch_xy_rs( adqnetm,mythid )
do bj = jtlo, jthi
do bi = itlo, ithi
do j = jmin, jmax
do i = imin, imax
adtmpfld2d(i,j,bi,bj) = adtmpfld2d(i,j,bi,bj)+adqnetm(i,j,
$bi,bj)
end do
end do
end do
end do
call adactive_read_xy( fnamehfluxm,adtmpfld2d,1,doglobalread,
$ladinit,optimcycle,mythid )
end
subroutine adcycle_tracer( bi, bj, adtracer, adgtracer )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adgtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer k
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adgtracer(i,j,k,bi,bj) = adgtracer(i,j,k,bi,bj)+adtracer(i,
$j,k,bi,bj)
adtracer(i,j,k,bi,bj) = 0.d0
end do
end do
end do
end
subroutine addiags_phi_hyd( k, bi, bj, imin, imax, jmin, jmax,
$adphihydc )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision bo_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision phi0surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_bo(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision topoz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /surf_fixed/ bo_surf, recip_bo, topoz, phi0surf
C==============================================
C declare arguments
C==============================================
double precision adphihydc(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmin, jmax
do i = imin, imax
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+adtotphihyd(i,j,k,bi,bj)
$*bo_surf(i,j,bi,bj)
adphihydc(i,j) = adphihydc(i,j)+adtotphihyd(i,j,k,bi,bj)
adtotphihyd(i,j,k,bi,bj) = 0.d0
end do
end do
end
subroutine addo_fields_blocking_exchanges( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adetanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_cd/ aduveld, advveld, adetanm1, adunm1, advnm1
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
C==============================================
C declare arguments
C==============================================
integer mythid
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if ( .not. useoffline) then
if (usedynp_ineos_zc) then
call adexch_xyz_rl( adtotphihyd,mythid )
endif
call adexch_uv_dgrid_3d_rl( aduveld,advveld, .true. ,nr,mythid )
if ( .not. implicitintgravwave) then
call adexch_xyz_rl( adsalt,mythid )
call adexch_xyz_rl( adtheta,mythid )
endif
if (( .not. staggertimestep) .or. ( .not. usemultidimadvec))
$then
if ( .not. implicitintgravwave) then
call adexch_xyz_rl( adwvel,mythid )
endif
call adexch_uv_xyz_rl( aduvel,advvel, .true. ,mythid )
endif
endif
end
subroutine addo_oceanic_phys( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adkux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_hortensor/ adkux, adkvy
double precision adkuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_uvtensor/ adkuz, adkvz
real*8 comlev1_bibj_empmr_8h(1-olx:snx+olx,1-oly:sny+oly,120)
common /cadempms/ comlev1_bibj_empmr_8h
real*8 comlev1_bibj_pmepr_9h(1-olx:snx+olx,1-oly:sny+oly,120)
common /cadpmepr/ comlev1_bibj_pmepr_9h
real*8 comlev1_bibj_k_salt_52h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsal0/ comlev1_bibj_k_salt_52h
real*8 comlev1_bibj_salt_5h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadsal1/ comlev1_bibj_salt_5h
real*8 comlev1_bibj_k_salt_54h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsalz/ comlev1_bibj_k_salt_54h
real*8 comlev1_bibj_k_theta_53h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtheth/ comlev1_bibj_k_theta_53h
real*8 comlev1_bibj_k_theta_51h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtheti/ comlev1_bibj_k_theta_51h
real*8 comlev1_bibj_theta_4h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadthetj/ comlev1_bibj_theta_4h
real*8 comlev1_theta_7h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadthetk/ comlev1_theta_7h
real*8 comlev1_bibj_totphihyd_6h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadtotphihyf/ comlev1_bibj_totphihyd_6h
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision detahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision etahnm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision pmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exact_eta_local/ etahnm1, detahdt, pmepr
double precision empmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_empmr/ empmr
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision adrhokm1(1-olx:snx+olx,1-oly:sny+oly)
double precision adrhokp1(1-olx:snx+olx,1-oly:sny+oly)
double precision adsigmar(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adsigmax(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adsigmay(1-olx:snx+olx,1-oly:sny+oly,nr)
integer bi
integer bj
integer dodiagsrho
integer i
integer imax
integer imin
integer ip1
integer ip2
integer ip3
integer ip4
integer ip5
integer itdkey
integer j
integer jmax
integer jmin
integer k
integer kkey
integer max1
integer max2
integer max3
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrhokm1(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrhokp1(ip1,ip2) = 0.d0
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsigmar(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsigmax(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsigmay(ip1,ip2,ip3) = 0.d0
end do
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
dodiagsrho = 0
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
itdkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
imin = 1-olx
imax = snx+olx
jmin = 1-oly
jmax = sny+oly
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,ip3,bi,bj) = comlev1_bibj_theta_4h(ip1,
$ip2,ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,ip3,bi,bj) = comlev1_bibj_salt_5h(ip1,ip2,
$ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
totphihyd(ip1,ip2,ip3,bi,bj) =
$comlev1_bibj_totphihyd_6h(ip1,ip2,ip3,itdkey)
end do
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
empmr(ip1,ip2,bi,bj) = comlev1_bibj_empmr_8h(ip1,ip2,
$itdkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
pmepr(ip1,ip2,bi,bj) = comlev1_bibj_pmepr_9h(ip1,ip2,
$itdkey)
end do
end do
if (usegmredi) then
call adgmredi_calc_tensor( adsigmax,adsigmay,adsigmar,bi,bj,
$mythid )
else
call adgmredi_calc_tensor_dummy( bi,bj )
endif
call adexternal_forcing_surf( bi,bj,imin,imax,jmin,jmax )
do k = 1, nr
kkey = (itdkey-1)*nr+k
if (usegmredi .or. k .gt. 1 .and. ivdc_kappa .ne. 0. .or.
$usesalt_plume .or. dodiagsrho .ge. 1) then
call adgrad_sigma( bi,bj,k,adrhoinsitu(1-olx,1-oly,k,bi,
$bj),adrhokm1,adrhokp1,adsigmax,adsigmay,adsigmar )
do j = jmin, jmax
do i = imin, imax
adrhoinsitu(i,j,k,bi,bj) = adrhoinsitu(i,j,k,bi,bj)+
$adrhokp1(i,j)
adrhokp1(i,j) = 0.d0
end do
end do
if (k .gt. 1) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,k-1,bi,bj) = comlev1_bibj_k_theta_53h(
$ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,k-1,bi,bj) = comlev1_bibj_k_salt_54h(
$ip1,ip2,kkey)
end do
end do
call adfind_rho_2d( imin,imax,jmin,jmax,k,theta(1-olx,1-
$oly,k-1,bi,bj),adtheta(1-olx,1-oly,k-1,bi,bj),salt(1-olx,1-oly,k-
$1,bi,bj),adsalt(1-olx,1-oly,k-1,bi,bj),adrhokm1,bi,bj )
endif
endif
if (fluidiswater) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,k,bi,bj) = comlev1_bibj_k_theta_51h(ip1,
$ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,k,bi,bj) = comlev1_bibj_k_salt_52h(ip1,
$ip2,kkey)
end do
end do
call adfind_rho_2d( imin,imax,jmin,jmax,k,theta(1-olx,1-
$oly,k,bi,bj),adtheta(1-olx,1-oly,k,bi,bj),salt(1-olx,1-oly,k,bi,
$bj),adsalt(1-olx,1-oly,k,bi,bj),adrhoinsitu(1-olx,1-oly,k,bi,bj),
$bi,bj )
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrhoinsitu(i,j,k,bi,bj) = 0.d0
end do
end do
endif
end do
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adkvz(i,j,k,bi,bj) = 0.d0
adkuz(i,j,k,bi,bj) = 0.d0
adkvy(i,j,k,bi,bj) = 0.d0
adkux(i,j,k,bi,bj) = 0.d0
adsigmar(i,j,k) = 0.d0
adsigmay(i,j,k) = 0.d0
adsigmax(i,j,k) = 0.d0
end do
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrhokp1(i,j) = 0.d0
adrhokm1(i,j) = 0.d0
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,ip3,ip4,ip5) = comlev1_theta_7h(ip1,ip2,
$ip3,ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
if (allowfreezing) then
call adfreeze_surface( mythid )
endif
end
subroutine mddo_oceanic_phys( mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_empmr_8h(1-olx:snx+olx,1-oly:sny+oly,120)
common /cadempms/ comlev1_bibj_empmr_8h
real*8 comlev1_bibj_ivdconvcount_7h(1-olx:snx+olx,1-oly:sny+oly,
$nr,120)
common /cadivdconvcount/ comlev1_bibj_ivdconvcount_7h
real*8 comlev1_bibj_pmepr_9h(1-olx:snx+olx,1-oly:sny+oly,120)
common /cadpmepr/ comlev1_bibj_pmepr_9h
real*8 comlev1_qsw_6h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadqsw/ comlev1_qsw_6h
real*8 comlev1_bibj_k_rhokm1_55h(1800)
common /cadrhokm2/ comlev1_bibj_k_rhokm1_55h
real*8 comlev1_bibj_k_salt_52h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsal0/ comlev1_bibj_k_salt_52h
real*8 comlev1_bibj_salt_5h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadsal1/ comlev1_bibj_salt_5h
real*8 comlev1_bibj_k_salt_54h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsalz/ comlev1_bibj_k_salt_54h
real*8 comlev1_sss_5h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadsss/ comlev1_sss_5h
real*8 comlev1_sst_4h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadsst/ comlev1_sst_4h
real*8 comlev1_bibj_surfaceforcings_12(1-olx:snx+olx,1-oly:sny+
$oly,120)
common /cadsurfaceforcings/ comlev1_bibj_surfaceforcings_12
real*8 comlev1_bibj_surfaceforcingt_13(1-olx:snx+olx,1-oly:sny+
$oly,120)
common /cadsurfaceforcingt/ comlev1_bibj_surfaceforcingt_13
real*8 comlev1_bibj_surfaceforcingtice(1-olx:snx+olx,1-oly:sny+
$oly,120)
common /cadsurfaceforcingtice/ comlev1_bibj_surfaceforcingtice
real*8 comlev1_bibj_surfaceforcingu_10(1-olx:snx+olx,1-oly:sny+
$oly,120)
common /cadsurfaceforcingu/ comlev1_bibj_surfaceforcingu_10
real*8 comlev1_bibj_surfaceforcingv_11(1-olx:snx+olx,1-oly:sny+
$oly,120)
common /cadsurfaceforcingv/ comlev1_bibj_surfaceforcingv_11
real*8 comlev1_bibj_k_theta_53h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtheth/ comlev1_bibj_k_theta_53h
real*8 comlev1_bibj_k_theta_51h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadtheti/ comlev1_bibj_k_theta_51h
real*8 comlev1_bibj_theta_4h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadthetj/ comlev1_bibj_theta_4h
real*8 comlev1_theta_7h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadthetk/ comlev1_theta_7h
real*8 comlev1_bibj_totphihyd_6h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadtotphihyf/ comlev1_bibj_totphihyd_6h
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision detahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision etahnm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision pmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exact_eta_local/ etahnm1, detahdt, pmepr
double precision empmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_empmr/ empmr
double precision qsw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_qsw/ qsw
double precision sss(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_sss/ sss
double precision sst(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_sst/ sst
double precision kux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_hortensor/ kux, kvy
double precision kuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_uvtensor/ kuz, kvz
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
double precision surfaceforcings(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
double precision surfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
double precision surfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision surfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
double precision surfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /surface_forcing/ surfaceforcingu, surfaceforcingv,
$surfaceforcingt, surfaceforcings, surfaceforcingtice
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
integer bi
integer bj
integer dodiagsrho
integer help_h
integer i
integer imax
integer imin
integer it0
integer it1
integer it2
integer it3
integer it4
integer it5
integer it6
integer it7
integer it8
integer itdkey
integer its
integer itt
integer itu
integer itv
integer itw
integer itx
integer ity
integer itz
integer iu0
integer iu1
integer iu2
integer iu3
integer iu4
integer iu5
integer iu6
integer iu7
integer iu8
integer iu9
integer iuh
integer iui
integer iuj
integer iuk
integer iul
integer ium
integer iun
integer iuo
integer iup
integer iuq
integer iur
integer ius
integer iut
integer iuu
integer iuv
integer iuw
integer iux
integer iuy
integer iuz
integer iva
integer j
integer jmax
integer jmin
integer k
integer kkey
integer max1
integer max2
integer max3
double precision rhokm1(1-olx:snx+olx,1-oly:sny+oly)
double precision rhokp1(1-olx:snx+olx,1-oly:sny+oly)
double precision sigmar(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision sigmax(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision sigmay(1-olx:snx+olx,1-oly:sny+oly,nr)
C**********************************************
C executable statements of routine
C**********************************************
dodiagsrho = 0
do iva = 1, nsy
do iu9 = 1, nsx
do iu8 = 1-oly, sny+oly
do iu7 = 1-olx, snx+olx
comlev1_sst_4h(iu7,iu8,iu9,iva,ikey_dynamics) = sst(iu7,
$iu8,iu9,iva)
end do
end do
end do
end do
do iva = 1, nsy
do iu9 = 1, nsx
do iu8 = 1-oly, sny+oly
do iu7 = 1-olx, snx+olx
comlev1_sss_5h(iu7,iu8,iu9,iva,ikey_dynamics) = sss(iu7,
$iu8,iu9,iva)
end do
end do
end do
end do
do iu6 = 1, nsy
do iu5 = 1, nsx
do iu4 = 1-oly, sny+oly
do iu3 = 1-olx, snx+olx
comlev1_qsw_6h(iu3,iu4,iu5,iu6,ikey_dynamics) = qsw(iu3,
$iu4,iu5,iu6)
end do
end do
end do
end do
do iu2 = 1, nsy
do iu1 = 1, nsx
do iu0 = 1, nr
do iuz = 1-oly, sny+oly
do iuy = 1-olx, snx+olx
comlev1_theta_7h(iuy,iuz,iu0,iu1,iu2,ikey_dynamics) =
$theta(iuy,iuz,iu0,iu1,iu2)
end do
end do
end do
end do
end do
if (allowfreezing) then
call freeze_surface( mytime,myiter,mythid )
endif
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
itdkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rhokm1(i,j) = 0.d0
rhokp1(i,j) = 0.d0
end do
end do
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
sigmax(i,j,k) = 0.d0
sigmay(i,j,k) = 0.d0
sigmar(i,j,k) = 0.d0
ivdconvcount(i,j,k,bi,bj) = 0.
kux(i,j,k,bi,bj) = 0.d0
kvy(i,j,k,bi,bj) = 0.d0
kuz(i,j,k,bi,bj) = 0.d0
kvz(i,j,k,bi,bj) = 0.d0
end do
end do
end do
imin = 1-olx
imax = snx+olx
jmin = 1-oly
jmax = sny+oly
do iux = 1, nr
do iuw = 1-oly, sny+oly
do iuv = 1-olx, snx+olx
comlev1_bibj_theta_4h(iuv,iuw,iux,itdkey) = theta(iuv,
$iuw,iux,bi,bj)
end do
end do
end do
do iuu = 1, nr
do iut = 1-oly, sny+oly
do ius = 1-olx, snx+olx
comlev1_bibj_salt_5h(ius,iut,iuu,itdkey) = salt(ius,iut,
$iuu,bi,bj)
end do
end do
end do
do iur = 1, nr
do iuq = 1-oly, sny+oly
do iup = 1-olx, snx+olx
comlev1_bibj_totphihyd_6h(iup,iuq,iur,itdkey) =
$totphihyd(iup,iuq,iur,bi,bj)
end do
end do
end do
do k = nr, 1, -1
kkey = (itdkey-1)*nr+k
if (fluidiswater) then
do iuo = 1-oly, sny+oly
do iun = 1-olx, snx+olx
comlev1_bibj_k_theta_51h(iun,iuo,kkey) = theta(iun,
$iuo,k,bi,bj)
end do
end do
do ium = 1-oly, sny+oly
do iul = 1-olx, snx+olx
comlev1_bibj_k_salt_52h(iul,ium,kkey) = salt(iul,ium,
$k,bi,bj)
end do
end do
call find_rho_2d( imin,imax,jmin,jmax,k,theta(1-olx,1-oly,
$k,bi,bj),salt(1-olx,1-oly,k,bi,bj),rhoinsitu(1-olx,1-oly,k,bi,bj),
$k,bi,bj,mythid )
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rhoinsitu(i,j,k,bi,bj) = 0.
end do
end do
endif
if (usegmredi .or. k .gt. 1 .and. ivdc_kappa .ne. 0. .or.
$usesalt_plume .or. dodiagsrho .ge. 1) then
if (k .gt. 1) then
do iuk = 1-oly, sny+oly
do iuj = 1-olx, snx+olx
comlev1_bibj_k_theta_53h(iuj,iuk,kkey) = theta(iuj,
$iuk,k-1,bi,bj)
end do
end do
do iui = 1-oly, sny+oly
do iuh = 1-olx, snx+olx
comlev1_bibj_k_salt_54h(iuh,iui,kkey) = salt(iuh,
$iui,k-1,bi,bj)
end do
end do
comlev1_bibj_k_rhokm1_55h(kkey) = rhokm1(bi,bj)
call find_rho_2d( imin,imax,jmin,jmax,k,theta(1-olx,1-
$oly,k-1,bi,bj),salt(1-olx,1-oly,k-1,bi,bj),rhokm1,help_h,bi,bj,
$mythid )
endif
do j = jmin, jmax
do i = imin, imax
rhokp1(i,j) = rhoinsitu(i,j,k,bi,bj)
end do
end do
call grad_sigma( bi,bj,imin,imax,jmin,jmax,k,rhoinsitu(1-
$olx,1-oly,k,bi,bj),rhokm1,rhokp1,sigmax,sigmay,sigmar,mythid )
endif
if (k .gt. 1 .and. ivdc_kappa .ne. 0.) then
call calc_ivdc( bi,bj,imin,imax,jmin,jmax,k,rhokm1,
$rhoinsitu(1-olx,1-oly,k,bi,bj),mytime,myiter,mythid )
endif
end do
do it8 = 1, nr
do it7 = 1-oly, sny+oly
do it6 = 1-olx, snx+olx
comlev1_bibj_ivdconvcount_7h(it6,it7,it8,itdkey) =
$ivdconvcount(it6,it7,it8,bi,bj)
end do
end do
end do
do it5 = 1-oly, sny+oly
do it4 = 1-olx, snx+olx
comlev1_bibj_empmr_8h(it4,it5,itdkey) = empmr(it4,it5,bi,
$bj)
end do
end do
do it3 = 1-oly, sny+oly
do it2 = 1-olx, snx+olx
comlev1_bibj_pmepr_9h(it2,it3,itdkey) = pmepr(it2,it3,bi,
$bj)
end do
end do
call external_forcing_surf( bi,bj,imin,imax,jmin,jmax,mytime,
$myiter,mythid )
do it1 = 1-oly, sny+oly
do it0 = 1-olx, snx+olx
comlev1_bibj_surfaceforcingu_10(it0,it1,itdkey) =
$surfaceforcingu(it0,it1,bi,bj)
end do
end do
do itz = 1-oly, sny+oly
do ity = 1-olx, snx+olx
comlev1_bibj_surfaceforcingv_11(ity,itz,itdkey) =
$surfaceforcingv(ity,itz,bi,bj)
end do
end do
do itx = 1-oly, sny+oly
do itw = 1-olx, snx+olx
comlev1_bibj_surfaceforcings_12(itw,itx,itdkey) =
$surfaceforcings(itw,itx,bi,bj)
end do
end do
do itv = 1-oly, sny+oly
do itu = 1-olx, snx+olx
comlev1_bibj_surfaceforcingt_13(itu,itv,itdkey) =
$surfaceforcingt(itu,itv,bi,bj)
end do
end do
do itt = 1-oly, sny+oly
do its = 1-olx, snx+olx
comlev1_bibj_surfaceforcingtice(its,itt,itdkey) =
$surfaceforcingtice(its,itt,bi,bj)
end do
end do
if (usegmredi) then
call mdgmredi_calc_tensor( imin,imax,jmin,jmax,sigmax,
$sigmay,sigmar,bi,bj,mytime,myiter,mythid )
else
call gmredi_calc_tensor_dummy( imin,imax,jmin,jmax,sigmax,
$sigmay,sigmar,bi,bj,mytime,myiter,mythid )
endif
end do
end do
end
subroutine addo_stagger_fields_exchanges( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
integer mythid
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (implicitintgravwave) then
call adexch_xyz_rl( adgs,mythid )
call adexch_xyz_rl( adgt,mythid )
endif
if (staggertimestep .and. usemultidimadvec) then
if ( .not. implicitintgravwave) then
call adexch_xyz_rl( adwvel,mythid )
endif
call adexch_uv_xyz_rl( aduvel,advvel, .true. ,mythid )
endif
end
subroutine addynamics( myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_cd/ aduveld, advveld, adetanm1, adunm1, advnm1
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
real*8 comlev1_bibj_gv_23h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgv/ comlev1_bibj_gv_23h
real*8 comlev1_bibj_gu_21h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgw/ comlev1_bibj_gu_21h
real*8 comlev1_bibj_k_gs_61h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgx/ comlev1_bibj_k_gs_61h
real*8 comlev1_bibj_k_gt_60h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgy/ comlev1_bibj_k_gt_60h
real*8 comlev1_bibj_kapparu_20h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparu/ comlev1_bibj_kapparu_20h
real*8 comlev1_bibj_kapparv_22h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparv/ comlev1_bibj_kapparv_22h
real*8 comlev1_bibj_kapparv_19h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparw/ comlev1_bibj_kapparv_19h
real*8 comlev1_bibj_kapparu_18h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparx/ comlev1_bibj_kapparu_18h
real*8 comlev1_bibj_k_salt_59h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsaly/ comlev1_bibj_k_salt_59h
real*8 comlev1_bibj_k_theta_58h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadthetg/ comlev1_bibj_k_theta_58h
real*8 comlev1_bibj_k_totphihyd_56h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtotphihye/ comlev1_bibj_k_totphihyd_56h
real*8 comlev1_bibj_uveld_25h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /caduveld/ comlev1_bibj_uveld_25h
real*8 comlev1_bibj_uvel_16h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /caduven/ comlev1_bibj_uvel_16h
real*8 comlev1_bibj_vveld_24h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadvveld/ comlev1_bibj_vveld_24h
real*8 comlev1_bibj_vvel_17h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadvven/ comlev1_bibj_vvel_17h
real*8 comlev1_bibj_wvel_15h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadwven/ comlev1_bibj_wvel_15h
double precision etanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision unm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_cd/ uveld, vveld, etanm1, unm1, vnm1
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision addphihydx(1-olx:snx+olx,1-oly:sny+oly)
double precision addphihydy(1-olx:snx+olx,1-oly:sny+oly)
double precision adfveru(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adfverv(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adgudissip(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvdissip(1-olx:snx+olx,1-oly:sny+oly)
double precision adkapparuh(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adkapparui(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adkapparvh(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adkapparvi(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adphihydc(1-olx:snx+olx,1-oly:sny+oly)
double precision adphihydf(1-olx:snx+olx,1-oly:sny+oly)
double precision adphisurfx(1-olx:snx+olx,1-oly:sny+oly)
double precision adphisurfy(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer help_h
integer help_i
integer i
integer idynkey
integer imax
integer imin
integer ip1
integer ip2
integer ip3
integer j
integer jmax
integer jmin
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
integer kdown
integer kkey
integer kup
integer max1
integer max2
integer max3
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addphihydx(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addphihydy(ip1,ip2) = 0.d0
end do
end do
do ip3 = 1, 2
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfveru(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, 2
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfverv(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgudissip(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgvdissip(ip1,ip2) = 0.d0
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adkapparuh(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adkapparui(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adkapparvh(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adkapparvi(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adphihydc(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adphihydf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adphisurfx(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adphisurfy(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
idynkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
imin = 0
imax = snx+1
jmin = 0
jmax = sny+1
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
wvel(ip1,ip2,ip3,bi,bj) = comlev1_bibj_wvel_15h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
uvel(ip1,ip2,ip3,bi,bj) = comlev1_bibj_uvel_16h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
vvel(ip1,ip2,ip3,bi,bj) = comlev1_bibj_vvel_17h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kapparu(ip1,ip2,ip3) = comlev1_bibj_kapparu_18h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kapparv(ip1,ip2,ip3) = comlev1_bibj_kapparv_19h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
if (implicitviscosity .and. usecdscheme) then
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
vveld(ip1,ip2,ip3,bi,bj) = comlev1_bibj_vveld_24h(ip1,
$ip2,ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
uveld(ip1,ip2,ip3,bi,bj) = comlev1_bibj_uveld_25h(ip1,
$ip2,ip3,idynkey)
end do
end do
end do
call adimpldiff( bi,bj,imin,imax,jmin,jmax,0,kapparv,
$adkapparvh,recip_hfacs,uveld,aduveld )
call adimpldiff( bi,bj,imin,imax,jmin,jmax,0,kapparu,
$adkapparuh,recip_hfacw,vveld,advveld )
endif
if (implicitviscosity) then
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kapparu(ip1,ip2,ip3) = comlev1_bibj_kapparu_20h(ip1,
$ip2,ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gu(ip1,ip2,ip3,bi,bj) = comlev1_bibj_gu_21h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
help_h = -1
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kapparv(ip1,ip2,ip3) = comlev1_bibj_kapparv_22h(ip1,
$ip2,ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gv(ip1,ip2,ip3,bi,bj) = comlev1_bibj_gv_23h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
help_i = -2
call adimpldiff( bi,bj,imin,imax,jmin,jmax,help_i,kapparv,
$adkapparvi,recip_hfacs,gv,adgv )
call adimpldiff( bi,bj,imin,imax,jmin,jmax,help_h,kapparu,
$adkapparui,recip_hfacw,gu,adgu )
endif
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kapparu(ip1,ip2,ip3) = comlev1_bibj_kapparu_18h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kapparv(ip1,ip2,ip3) = comlev1_bibj_kapparv_19h(ip1,ip2,
$ip3,idynkey)
end do
end do
end do
do k = nr, 1, -1
kup = 1+mod(k+1,2)
kdown = 1+mod(k,2)
kkey = (idynkey-1)*nr+k
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
totphihyd(ip1,ip2,k,bi,bj) =
$comlev1_bibj_k_totphihyd_56h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,k,bi,bj) = comlev1_bibj_k_theta_58h(ip1,
$ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,k,bi,bj) = comlev1_bibj_k_salt_59h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gt(ip1,ip2,k,bi,bj) = comlev1_bibj_k_gt_60h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gs(ip1,ip2,k,bi,bj) = comlev1_bibj_k_gs_61h(ip1,ip2,
$kkey)
end do
end do
if (momstepping) then
call adtimestep( bi,bj,imin,imax,jmin,jmax,k,addphihydx,
$addphihydy,adphisurfx,adphisurfy,adgudissip,adgvdissip,myiter )
if ( .not. vectorinvariantmomentum) then
call admom_fluxform( bi,bj,imin,imax,jmin,jmax,k,kup,
$kdown,kapparu,kapparv,adfveru,adfverv,adgudissip,adgvdissip,
$mythid )
else
call admom_vecinv( bi,bj,imin,imax,jmin,jmax,k,kup,
$kdown,kapparu,kapparv,adfveru,adfverv,adgudissip,adgvdissip,
$mythid )
endif
endif
if (implicitintgravwave) then
call adcalc_phi_hyd( bi,bj,imin,imax,jmin,jmax,k,gt,adgt,
$gs,adgs,adphihydf,adphihydc,addphihydx,addphihydy,myiter,mythid )
else
call adcalc_phi_hyd( bi,bj,imin,imax,jmin,jmax,k,theta,
$adtheta,salt,adsalt,adphihydf,adphihydc,addphihydx,addphihydy,
$myiter,mythid )
endif
end do
if (implicsurfpress .ne. 1.) then
call adcalc_grad_phi_surf( bi,bj,imin,imax,jmin,jmax,adetan,
$adphisurfx,adphisurfy )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adphisurfy(i,j) = 0.d0
adphisurfx(i,j) = 0.d0
adphihydc(i,j) = 0.d0
adphihydf(i,j) = 0.d0
adfverv(i,j,2) = 0.d0
adfverv(i,j,1) = 0.d0
adfveru(i,j,2) = 0.d0
adfveru(i,j,1) = 0.d0
end do
end do
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adgv(i,j,k,bi,bj) = 0.d0
adgu(i,j,k,bi,bj) = 0.d0
end do
end do
end do
end do
end do
end
subroutine mddynamics( mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_gv_23h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgv/ comlev1_bibj_gv_23h
real*8 comlev1_bibj_gu_21h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgw/ comlev1_bibj_gu_21h
real*8 comlev1_bibj_k_gs_61h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgx/ comlev1_bibj_k_gs_61h
real*8 comlev1_bibj_k_gt_60h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgy/ comlev1_bibj_k_gt_60h
real*8 comlev1_bibj_kapparu_20h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparu/ comlev1_bibj_kapparu_20h
real*8 comlev1_bibj_kapparv_22h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparv/ comlev1_bibj_kapparv_22h
real*8 comlev1_bibj_kapparv_19h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparw/ comlev1_bibj_kapparv_19h
real*8 comlev1_bibj_kapparu_18h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparx/ comlev1_bibj_kapparu_18h
real*8 comlev1_bibj_k_phihydlow_57h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadphihydlow/ comlev1_bibj_k_phihydlow_57h
real*8 comlev1_bibj_k_salt_59h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadsaly/ comlev1_bibj_k_salt_59h
real*8 comlev1_bibj_k_theta_58h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadthetg/ comlev1_bibj_k_theta_58h
real*8 comlev1_bibj_k_totphihyd_56h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtotphihye/ comlev1_bibj_k_totphihyd_56h
real*8 comlev1_bibj_uveld_25h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /caduveld/ comlev1_bibj_uveld_25h
real*8 comlev1_bibj_uvel_16h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /caduven/ comlev1_bibj_uvel_16h
real*8 comlev1_bibj_vveld_24h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadvveld/ comlev1_bibj_vveld_24h
real*8 comlev1_bibj_vvel_17h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadvven/ comlev1_bibj_vvel_17h
real*8 comlev1_bibj_wvel_15h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadwven/ comlev1_bibj_wvel_15h
double precision etanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision unm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_cd/ uveld, vveld, etanm1, unm1, vnm1
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
integer bi
integer bj
double precision dphihydx(1-olx:snx+olx,1-oly:sny+oly)
double precision dphihydy(1-olx:snx+olx,1-oly:sny+oly)
double precision fveru(1-olx:snx+olx,1-oly:sny+oly,2)
double precision fverv(1-olx:snx+olx,1-oly:sny+oly,2)
double precision gudissip(1-olx:snx+olx,1-oly:sny+oly)
double precision gvdissip(1-olx:snx+olx,1-oly:sny+oly)
integer help_h
integer help_i
integer i
integer idynkey
integer imax
integer imin
integer iu1
integer iu2
integer iu3
integer iu4
integer iu5
integer iu6
integer iu7
integer iu8
integer iu9
integer iv0
integer iv1
integer iv2
integer iv3
integer iv4
integer iv5
integer iv6
integer iv7
integer iv8
integer iv9
integer iva
integer ivb
integer ivc
integer ivd
integer ive
integer ivf
integer ivg
integer ivh
integer ivi
integer ivv
integer ivw
integer ivx
integer ivy
integer ivz
integer iwa
integer iwb
integer iwc
integer iwd
integer iwe
integer iwf
integer iwg
integer iwh
integer iwi
integer iwj
integer iwk
integer iwl
integer j
integer jmax
integer jmin
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
integer kdown
integer kkey
integer kup
integer max1
integer max2
integer max3
double precision phihydc(1-olx:snx+olx,1-oly:sny+oly)
double precision phihydf(1-olx:snx+olx,1-oly:sny+oly)
double precision phisurfx(1-olx:snx+olx,1-oly:sny+oly)
double precision phisurfy(1-olx:snx+olx,1-oly:sny+oly)
C**********************************************
C executable statements of routine
C**********************************************
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
idynkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
gu(i,j,k,bi,bj) = 0.d0
gv(i,j,k,bi,bj) = 0.d0
end do
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fveru(i,j,1) = 0.d0
fveru(i,j,2) = 0.d0
fverv(i,j,1) = 0.d0
fverv(i,j,2) = 0.d0
phihydf(i,j) = 0.d0
phihydc(i,j) = 0.d0
phisurfx(i,j) = 0.d0
phisurfy(i,j) = 0.d0
gudissip(i,j) = 0.d0
gvdissip(i,j) = 0.d0
phihydlow(i,j,bi,bj) = 0.d0
end do
end do
imin = 0
imax = snx+1
jmin = 0
jmax = sny+1
do iwl = 1, nr
do iwk = 1-oly, sny+oly
do iwj = 1-olx, snx+olx
comlev1_bibj_wvel_15h(iwj,iwk,iwl,idynkey) = wvel(iwj,
$iwk,iwl,bi,bj)
end do
end do
end do
if (implicsurfpress .ne. 1.) then
call calc_grad_phi_surf( bi,bj,imin,imax,jmin,jmax,etan,
$phisurfx,phisurfy,mythid )
endif
do iwi = 1, nr
do iwh = 1-oly, sny+oly
do iwg = 1-olx, snx+olx
comlev1_bibj_uvel_16h(iwg,iwh,iwi,idynkey) = uvel(iwg,
$iwh,iwi,bi,bj)
end do
end do
end do
do iwf = 1, nr
do iwe = 1-oly, sny+oly
do iwd = 1-olx, snx+olx
comlev1_bibj_vvel_17h(iwd,iwe,iwf,idynkey) = vvel(iwd,
$iwe,iwf,bi,bj)
end do
end do
end do
call calc_viscosity( bi,bj,imin,imax,jmin,jmax,kapparu,
$kapparv,mythid )
do iwc = 1, nr
do iwb = 1-oly, sny+oly
do iwa = 1-olx, snx+olx
comlev1_bibj_kapparu_18h(iwa,iwb,iwc,idynkey) = kapparu(
$iwa,iwb,iwc)
end do
end do
end do
do iv9 = 1, nr
do iv8 = 1-oly, sny+oly
do iv7 = 1-olx, snx+olx
comlev1_bibj_kapparv_19h(iv7,iv8,iv9,idynkey) = kapparv(
$iv7,iv8,iv9)
end do
end do
end do
do k = 1, nr
kup = 1+mod(k+1,2)
kdown = 1+mod(k,2)
kkey = (idynkey-1)*nr+k
do iv6 = 1-oly, sny+oly
do iv5 = 1-olx, snx+olx
comlev1_bibj_k_totphihyd_56h(iv5,iv6,kkey) = totphihyd(
$iv5,iv6,k,bi,bj)
end do
end do
do iv4 = 1-oly, sny+oly
do iv3 = 1-olx, snx+olx
comlev1_bibj_k_phihydlow_57h(iv3,iv4,kkey) = phihydlow(
$iv3,iv4,bi,bj)
end do
end do
do iv2 = 1-oly, sny+oly
do iv1 = 1-olx, snx+olx
comlev1_bibj_k_theta_58h(iv1,iv2,kkey) = theta(iv1,iv2,
$k,bi,bj)
end do
end do
do iv0 = 1-oly, sny+oly
do ivz = 1-olx, snx+olx
comlev1_bibj_k_salt_59h(ivz,iv0,kkey) = salt(ivz,iv0,k,
$bi,bj)
end do
end do
do ivy = 1-oly, sny+oly
do ivx = 1-olx, snx+olx
comlev1_bibj_k_gt_60h(ivx,ivy,kkey) = gt(ivx,ivy,k,bi,
$bj)
end do
end do
do ivw = 1-oly, sny+oly
do ivv = 1-olx, snx+olx
comlev1_bibj_k_gs_61h(ivv,ivw,kkey) = gs(ivv,ivw,k,bi,
$bj)
end do
end do
if (implicitintgravwave) then
call mdcalc_phi_hyd( bi,bj,imin,imax,jmin,jmax,k,gt,gs,
$phihydf,phihydc,dphihydx,dphihydy,mytime,myiter,mythid )
else
call mdcalc_phi_hyd( bi,bj,imin,imax,jmin,jmax,k,theta,
$salt,phihydf,phihydc,dphihydx,dphihydy,mytime,myiter,mythid )
endif
if (momstepping) then
if ( .not. vectorinvariantmomentum) then
call mdmom_fluxform( bi,bj,imin,imax,jmin,jmax,k,kup,
$kdown,kapparu,kapparv,fveru,fverv,gudissip,gvdissip,mytime,myiter,
$mythid )
else
call mdmom_vecinv( bi,bj,imin,imax,jmin,jmax,k,kup,
$kdown,kapparu,kapparv,fveru,fverv,gudissip,gvdissip,mytime,myiter,
$mythid )
endif
call timestep( bi,bj,imin,imax,jmin,jmax,k,dphihydx,
$dphihydy,phisurfx,phisurfy,gudissip,gvdissip,mytime,myiter,mythid
$)
endif
end do
if (implicitviscosity) then
do ivi = 1, nr
do ivh = 1-oly, sny+oly
do ivg = 1-olx, snx+olx
comlev1_bibj_kapparu_20h(ivg,ivh,ivi,idynkey) =
$kapparu(ivg,ivh,ivi)
end do
end do
end do
do ivf = 1, nr
do ive = 1-oly, sny+oly
do ivd = 1-olx, snx+olx
comlev1_bibj_gu_21h(ivd,ive,ivf,idynkey) = gu(ivd,ive,
$ivf,bi,bj)
end do
end do
end do
help_h = -1
call impldiff( bi,bj,imin,imax,jmin,jmax,help_h,kapparu,
$recip_hfacw,gu,mythid )
do ivc = 1, nr
do ivb = 1-oly, sny+oly
do iva = 1-olx, snx+olx
comlev1_bibj_kapparv_22h(iva,ivb,ivc,idynkey) =
$kapparv(iva,ivb,ivc)
end do
end do
end do
do iu9 = 1, nr
do iu8 = 1-oly, sny+oly
do iu7 = 1-olx, snx+olx
comlev1_bibj_gv_23h(iu7,iu8,iu9,idynkey) = gv(iu7,iu8,
$iu9,bi,bj)
end do
end do
end do
help_i = -2
call impldiff( bi,bj,imin,imax,jmin,jmax,help_i,kapparv,
$recip_hfacs,gv,mythid )
endif
if (implicitviscosity .and. usecdscheme) then
do iu6 = 1, nr
do iu5 = 1-oly, sny+oly
do iu4 = 1-olx, snx+olx
comlev1_bibj_vveld_24h(iu4,iu5,iu6,idynkey) = vveld(
$iu4,iu5,iu6,bi,bj)
end do
end do
end do
call impldiff( bi,bj,imin,imax,jmin,jmax,0,kapparu,
$recip_hfacw,vveld,mythid )
do iu3 = 1, nr
do iu2 = 1-oly, sny+oly
do iu1 = 1-olx, snx+olx
comlev1_bibj_uveld_25h(iu1,iu2,iu3,idynkey) = uveld(
$iu1,iu2,iu3,bi,bj)
end do
end do
end do
call impldiff( bi,bj,imin,imax,jmin,jmax,0,kapparv,
$recip_hfacs,uveld,mythid )
endif
end do
end do
end
subroutine adexch_uv_3d_rl( aduphi, advphi, withsigns, mynz,
$mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer exch_update_corners
parameter ( exch_update_corners = 1 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
integer mynz
double precision aduphi(1-olx:snx+olx,1-oly:sny+oly,mynz,nsx,nsy)
double precision advphi(1-olx:snx+olx,1-oly:sny+oly,mynz,nsx,nsy)
integer mythid
logical withsigns
C==============================================
C declare local variables
C==============================================
integer exchwidthx
integer exchwidthy
integer ole
integer oln
integer ols
integer olw
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
olw = olx
ole = olx
oln = oly
ols = oly
exchwidthx = olx
exchwidthy = oly
if (usecubedsphereexchange) then
call exch1_rl_cube_ad( aduphi,advphi,withsigns,olw,ole,ols,oln,
$mynz,exchwidthx,exchwidthy,exch_update_corners,mythid )
else
call exch1_rl_ad( advphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
call exch1_rl_ad( aduphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
endif
end
subroutine adexch_uv_dgrid_3d_rl( aduphi, advphi, withsigns, mynz,
$ mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer exch_update_corners
parameter ( exch_update_corners = 1 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
integer mynz
double precision aduphi(1-olx:snx+olx,1-oly:sny+oly,mynz,nsx,nsy)
double precision advphi(1-olx:snx+olx,1-oly:sny+oly,mynz,nsx,nsy)
integer mythid
logical withsigns
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
integer exchwidthx
integer exchwidthy
integer i
integer j
integer k
integer myface
double precision negone
integer ole
integer oln
integer ols
integer olw
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
olw = olx
ole = olx
oln = oly
ols = oly
exchwidthx = olx
exchwidthy = oly
negone = 1.
if (withsigns) then
negone = -1.
endif
if (usecubedsphereexchange) then
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
myface = bi
do k = 1, mynz
if (mod(myface,2) .eq. 1) then
do j = 1-oly, sny+oly
do i = 1, exchwidthx
advphi(1-i,j,k,bi,bj) = advphi(1-i,j,k,bi,bj)*negone
end do
end do
do j = 1, exchwidthy
do i = 1-olx, snx+olx
aduphi(i,sny+j,k,bi,bj) = aduphi(i,sny+j,k,bi,bj)*
$negone
end do
end do
else
do j = 1, exchwidthy
do i = 1-olx, snx+olx
aduphi(i,1-j,k,bi,bj) = aduphi(i,1-j,k,bi,bj)*negone
end do
end do
do j = 1-oly, sny+oly
do i = 1, exchwidthx
advphi(snx+i,j,k,bi,bj) = advphi(snx+i,j,k,bi,bj)*
$negone
end do
end do
endif
end do
end do
end do
call adexch_uv_3d_rl( advphi,aduphi, .false. ,mynz,mythid )
else
call exch1_rl_ad( advphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
call exch1_rl_ad( aduphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
endif
end
subroutine adexch_uv_xy_rs( aduphi, advphi, withsigns, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer exch_update_corners
parameter ( exch_update_corners = 1 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
double precision aduphi(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision advphi(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer mythid
logical withsigns
C==============================================
C declare local variables
C==============================================
integer exchwidthx
integer exchwidthy
integer mynz
integer ole
integer oln
integer ols
integer olw
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
olw = olx
ole = olx
oln = oly
ols = oly
exchwidthx = olx
exchwidthy = oly
mynz = 1
if (usecubedsphereexchange) then
call exch1_rs_cube_ad( aduphi,advphi,withsigns,olw,ole,ols,oln,
$mynz,exchwidthx,exchwidthy,exch_update_corners,mythid )
else
call exch1_rs_ad( advphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
call exch1_rs_ad( aduphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
endif
end
subroutine adexch_uv_xyz_rl( aduphi, advphi, withsigns, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer exch_update_corners
parameter ( exch_update_corners = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
double precision aduphi(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advphi(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer mythid
logical withsigns
C==============================================
C declare local variables
C==============================================
integer exchwidthx
integer exchwidthy
integer mynz
integer ole
integer oln
integer ols
integer olw
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
olw = olx
ole = olx
oln = oly
ols = oly
exchwidthx = olx
exchwidthy = oly
mynz = nr
if (usecubedsphereexchange) then
call exch1_rl_cube_ad( aduphi,advphi,withsigns,olw,ole,ols,oln,
$mynz,exchwidthx,exchwidthy,exch_update_corners,mythid )
else
call exch1_rl_ad( advphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
call exch1_rl_ad( aduphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
endif
end
subroutine adexch_xy_rl( adphi, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer exch_update_corners
parameter ( exch_update_corners = 1 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
double precision adphi(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer mythid
C==============================================
C declare local variables
C==============================================
integer exchwidthx
integer exchwidthy
integer mynz
integer ole
integer oln
integer ols
integer olw
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
olw = olx
ole = olx
oln = oly
ols = oly
exchwidthx = olx
exchwidthy = oly
mynz = 1
if (usecubedsphereexchange) then
call exch1_rl_cube_ad( adphi, .false. ,olw,ole,ols,oln,mynz,
$exchwidthx,exchwidthy,exch_update_corners,mythid )
else
call exch1_rl_ad( adphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
endif
end
subroutine adexch_xy_rs( adphi, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer exch_update_corners
parameter ( exch_update_corners = 1 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
double precision adphi(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer mythid
C==============================================
C declare local variables
C==============================================
integer exchwidthx
integer exchwidthy
integer mynz
integer ole
integer oln
integer ols
integer olw
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
olw = olx
ole = olx
oln = oly
ols = oly
exchwidthx = olx
exchwidthy = oly
mynz = 1
if (usecubedsphereexchange) then
call exch1_rs_cube_ad( adphi, .false. ,olw,ole,ols,oln,mynz,
$exchwidthx,exchwidthy,exch_update_corners,mythid )
else
call exch1_rs_ad( adphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
endif
end
subroutine adexch_xyz_rl( adphi, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer exch_update_corners
parameter ( exch_update_corners = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
double precision adphi(1-olx:snx+olx,1-oly:sny+oly,1:nr,nsx,nsy)
integer mythid
C==============================================
C declare local variables
C==============================================
integer exchwidthx
integer exchwidthy
integer mynz
integer ole
integer oln
integer ols
integer olw
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
olw = olx
ole = olx
oln = oly
ols = oly
exchwidthx = olx
exchwidthy = oly
mynz = nr
if (usecubedsphereexchange) then
call exch1_rl_cube_ad( adphi, .false. ,olw,ole,ols,oln,mynz,
$exchwidthx,exchwidthy,exch_update_corners,mythid )
else
call exch1_rl_ad( adphi,olw,ole,ols,oln,mynz,exchwidthx,
$exchwidthy,exch_update_corners,mythid )
endif
end
subroutine adexternal_fields_load( mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_len_fnam
parameter ( max_len_fnam = 512 )
integer max_len_prec
parameter ( max_len_prec = 200 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adempmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_empmr/ adempmr
double precision adfu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_fu/ adfu
double precision adfv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_fv/ adfv
double precision adqnet(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_qnet/ adqnet
double precision adsaltflux(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_saltflux/ adsaltflux
double precision adsss(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_sss/ adsss
double precision adsst(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_sst/ adsst
double precision adempmr0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adempmr1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adtdfields/ adtaux0, adtauy0, adqnet0, adempmr0, adsst0,
$adsss0, adtaux1, adtauy1, adqnet1, adempmr1, adsst1, adsss1,
$adsaltflux0, adsaltflux1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
character*(max_len_fnam) bathyfile
character*(max_len_fnam) buoyancyrelation
character*(max_len_fnam) delrcfile
character*(max_len_fnam) delrfile
character*(max_len_fnam) delxfile
character*(max_len_fnam) delyfile
character*(max_len_fnam) diffkrfile
character*(max_len_fnam) dqdtfile
character*(max_len_fnam) eddypsixfile
character*(max_len_fnam) eddypsiyfile
character*(max_len_fnam) empmrfile
character*(6) eostype
character*(max_len_fnam) horizgridfile
character*(max_len_fnam) hybsigmfile
character*(max_len_fnam) hydrogsaltfile
character*(max_len_fnam) hydrogthetafile
character*(max_len_fnam) lambdasaltfile
character*(max_len_fnam) lambdathetafile
character*(max_len_fnam) mdsiolocaldir
character*(max_len_fnam) meridwindfile
character*(10) pickupsuff
character*(max_len_fnam) ploadfile
character*(max_len_fnam) psurfinitfile
character*(max_len_fnam) rhoreffile
character*(max_len_fnam) saltclimfile
character*(max_len_fnam) saltfluxfile
character*(max_len_fnam) sreffile
character*(max_len_fnam) surfqfile
character*(max_len_fnam) surfqnetfile
character*(max_len_fnam) surfqswfile
character*(max_len_prec/2) the_run_name
character*(max_len_fnam) thetaclimfile
character*(max_len_fnam) topofile
character*(max_len_fnam) treffile
character*(max_len_fnam) uvelinitfile
character*(max_len_fnam) visca4dfile
character*(max_len_fnam) visca4zfile
character*(max_len_fnam) viscahdfile
character*(max_len_fnam) viscahzfile
character*(max_len_fnam) vvelinitfile
character*(max_len_fnam) zonalwindfile
common /parm_c/ buoyancyrelation, eostype, pickupsuff,
$mdsiolocaldir, treffile, sreffile, rhoreffile, delrfile,
$delrcfile, hybsigmfile, delxfile, delyfile, horizgridfile,
$bathyfile, topofile, viscahdfile, viscahzfile, visca4dfile,
$visca4zfile, hydrogthetafile, hydrogsaltfile, diffkrfile,
$zonalwindfile, meridwindfile, thetaclimfile, saltclimfile,
$empmrfile, saltfluxfile, surfqfile, surfqnetfile, surfqswfile,
$lambdathetafile, lambdasaltfile, uvelinitfile, vvelinitfile,
$psurfinitfile, dqdtfile, ploadfile, eddypsixfile, eddypsiyfile,
$the_run_name
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
double precision awght
integer bi
integer bj
double precision bwght
integer i
integer ifcyc
integer ifprd
integer iftm
integer imytm
integer intime0
integer j
double precision rdt
double precision tmp1wght
double precision tmp2wght
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (periodicexternalforcing) then
rdt = 1.d0/deltatclock
imytm = nint(mytime*rdt)
ifprd = nint(externforcingperiod*rdt)
ifcyc = nint(externforcingcycle*rdt)
imytm = imytm+ifcyc*(1-nint(mytime/externforcingcycle))
iftm = mod(imytm+ifcyc-ifprd/2,ifcyc)
intime0 = 1+int(iftm/ifprd)
tmp1wght = float(iftm-ifprd*(intime0-1))
tmp2wght = float(ifprd)
awght = tmp1wght/tmp2wght
bwght = 1.d0-awght
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
if (saltfluxfile .ne. ' ') then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adsaltflux0(i,j,bi,bj) = adsaltflux0(i,j,bi,bj)+
$adsaltflux(i,j,bi,bj)*bwght
adsaltflux1(i,j,bi,bj) = adsaltflux1(i,j,bi,bj)+
$adsaltflux(i,j,bi,bj)*awght
adsaltflux(i,j,bi,bj) = 0.d0
end do
end do
endif
if (empmrfile .ne. ' ') then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adempmr0(i,j,bi,bj) = adempmr0(i,j,bi,bj)+adempmr(i,j,
$bi,bj)*bwght
adempmr1(i,j,bi,bj) = adempmr1(i,j,bi,bj)+adempmr(i,j,
$bi,bj)*awght
adempmr(i,j,bi,bj) = 0.d0
end do
end do
endif
if (surfqnetfile .ne. ' ' .or. surfqfile .ne. ' ') then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adqnet0(i,j,bi,bj) = adqnet0(i,j,bi,bj)+adqnet(i,j,bi,
$bj)*bwght
adqnet1(i,j,bi,bj) = adqnet1(i,j,bi,bj)+adqnet(i,j,bi,
$bj)*awght
adqnet(i,j,bi,bj) = 0.d0
end do
end do
endif
if (meridwindfile .ne. ' ') then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adtauy0(i,j,bi,bj) = adtauy0(i,j,bi,bj)+adfv(i,j,bi,
$bj)*bwght
adtauy1(i,j,bi,bj) = adtauy1(i,j,bi,bj)+adfv(i,j,bi,
$bj)*awght
adfv(i,j,bi,bj) = 0.d0
end do
end do
endif
if (zonalwindfile .ne. ' ') then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adtaux0(i,j,bi,bj) = adtaux0(i,j,bi,bj)+adfu(i,j,bi,
$bj)*bwght
adtaux1(i,j,bi,bj) = adtaux1(i,j,bi,bj)+adfu(i,j,bi,
$bj)*awght
adfu(i,j,bi,bj) = 0.d0
end do
end do
endif
if (saltclimfile .ne. ' ') then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adsss0(i,j,bi,bj) = adsss0(i,j,bi,bj)+adsss(i,j,bi,bj)
$*bwght
adsss1(i,j,bi,bj) = adsss1(i,j,bi,bj)+adsss(i,j,bi,bj)
$*awght
adsss(i,j,bi,bj) = 0.d0
end do
end do
endif
if (thetaclimfile .ne. ' ') then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adsst0(i,j,bi,bj) = adsst0(i,j,bi,bj)+adsst(i,j,bi,bj)
$*bwght
adsst1(i,j,bi,bj) = adsst1(i,j,bi,bj)+adsst(i,j,bi,bj)
$*awght
adsst(i,j,bi,bj) = 0.d0
end do
end do
endif
end do
end do
if (iftm-ifprd*(intime0-1) .eq. 0 .or. myiter .eq. niter0) then
call adexch_xy_rs( adsaltflux1,mythid )
call adexch_xy_rs( adsaltflux0,mythid )
call adexch_xy_rs( adempmr1,mythid )
call adexch_xy_rs( adempmr0,mythid )
call adexch_xy_rs( adqnet1,mythid )
call adexch_xy_rs( adqnet0,mythid )
call adexch_uv_xy_rs( adtaux1,adtauy1, .true. ,mythid )
call adexch_uv_xy_rs( adtaux0,adtauy0, .true. ,mythid )
call adexch_xy_rs( adsss1,mythid )
call adexch_xy_rs( adsss0,mythid )
call adexch_xy_rs( adsst1,mythid )
call adexch_xy_rs( adsst0,mythid )
if (empmrfile .ne. ' ') then
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adempmr1(i,j,bi,bj) = adempmr1(i,j,bi,bj)*
$rhoconstfresh
adempmr0(i,j,bi,bj) = adempmr0(i,j,bi,bj)*
$rhoconstfresh
end do
end do
end do
end do
call adread_rec_xy_rs( adempmr1 )
call adread_rec_xy_rs( adempmr0 )
endif
endif
endif
end
subroutine adexternal_forcing_s( bi, bj, klev )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adssurfcor
double precision adtsurfcor
common /adsurf_correc/ adtsurfcor, adssurfcor
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer klev
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer ksurface
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (fluidisair) then
ksurface = 0
else if (usingpcoords) then
ksurface = nr
else
ksurface = 1
endif
if (linfsconservetr) then
do j = 1, sny
do i = 1, snx
if (klev .eq. ksurfc(i,j,bi,bj)) then
adssurfcor = adssurfcor+adgs(i,j,klev,bi,bj)*recip_drf(
$klev)*recip_hfacc(i,j,klev,bi,bj)
endif
end do
end do
endif
if (klev .eq. ksurface) then
do j = 1, sny
do i = 1, snx
adsurfaceforcings(i,j,bi,bj) = adsurfaceforcings(i,j,bi,bj)+
$adgs(i,j,klev,bi,bj)*recip_drf(klev)*recip_hfacc(i,j,klev,bi,bj)
end do
end do
endif
end
subroutine adexternal_forcing_surf( bi, bj, imin, imax, jmin,
$jmax )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision unset_rl
parameter ( unset_rl = 123456.7d0 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision addetahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adpmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adexact_eta_local/ addetahdt, adpmepr
double precision adempmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_empmr/ adempmr
double precision adfu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_fu/ adfu
double precision adfv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_fv/ adfv
double precision adqnet(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_qnet/ adqnet
double precision adsaltflux(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_saltflux/ adsaltflux
double precision adsss(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_sss/ adsss
double precision adsst(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_sst/ adsst
double precision adqnetm(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /admean_qnet/ adqnetm
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
double precision detahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision etahnm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision pmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exact_eta_local/ etahnm1, detahdt, pmepr
double precision empmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_empmr/ empmr
double precision lambdasaltclimrelax(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /ffields_lambdasaltclimrelax/ lambdasaltclimrelax
double precision lambdathetaclimrelax(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /ffields_lambdathetaclimrelax/ lambdathetaclimrelax
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision heatcapacity_cp
double precision recip_cp
common /parm_a/ heatcapacity_cp, recip_cp
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer ks
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usingpcoords) then
ks = nr
else
ks = 1
endif
if (userealfreshwaterflux) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
empmr(i,j,bi,bj) = empmr(i,j,bi,bj)*maskinc(i,j,bi,bj)
end do
end do
endif
if (staggertimestep) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
pmepr(i,j,bi,bj) = -empmr(i,j,bi,bj)
end do
end do
endif
if ((nonlinfreesurf .gt. 0 .or. usingpcoords) .and.
$userealfreshwaterflux) then
if (salt_evprrn .ne. unset_rl) then
do j = jmin, jmax
do i = imin, imax
adpmepr(i,j,bi,bj) = adpmepr(i,j,bi,bj)+adsurfaceforcings(
$i,j,bi,bj)*(salt_evprrn-salt(i,j,ks,bi,bj))*mass2runit
adsalt(i,j,ks,bi,bj) = adsalt(i,j,ks,bi,bj)-
$adsurfaceforcings(i,j,bi,bj)*pmepr(i,j,bi,bj)*mass2runit
end do
end do
endif
if (temp_evprrn .ne. unset_rl) then
do j = jmin, jmax
do i = imin, imax
adpmepr(i,j,bi,bj) = adpmepr(i,j,bi,bj)+adsurfaceforcingt(
$i,j,bi,bj)*(temp_evprrn-theta(i,j,ks,bi,bj))*mass2runit
adtheta(i,j,ks,bi,bj) = adtheta(i,j,ks,bi,bj)-
$adsurfaceforcingt(i,j,bi,bj)*pmepr(i,j,bi,bj)*mass2runit
end do
end do
endif
else
if (convertfw2salt .eq. (-1.)) then
if (salt_evprrn .ne. unset_rl) then
do j = jmin, jmax
do i = imin, imax
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)+
$adsurfaceforcings(i,j,bi,bj)*(salt(i,j,ks,bi,bj)-salt_evprrn)*
$mass2runit
adsalt(i,j,ks,bi,bj) = adsalt(i,j,ks,bi,bj)+
$adsurfaceforcings(i,j,bi,bj)*empmr(i,j,bi,bj)*mass2runit
end do
end do
endif
if (temp_evprrn .ne. unset_rl) then
do j = jmin, jmax
do i = imin, imax
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)+
$adsurfaceforcingt(i,j,bi,bj)*(theta(i,j,ks,bi,bj)-temp_evprrn)*
$mass2runit
adtheta(i,j,ks,bi,bj) = adtheta(i,j,ks,bi,bj)+
$adsurfaceforcingt(i,j,bi,bj)*empmr(i,j,bi,bj)*mass2runit
end do
end do
endif
else
if (salt_evprrn .ne. unset_rl) then
do j = jmin, jmax
do i = imin, imax
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)+
$adsurfaceforcings(i,j,bi,bj)*(convertfw2salt-salt_evprrn)*
$mass2runit
end do
end do
endif
if (temp_evprrn .ne. unset_rl) then
do j = jmin, jmax
do i = imin, imax
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)+
$adsurfaceforcingt(i,j,bi,bj)*(tref(ks)-temp_evprrn)*mass2runit
end do
end do
endif
endif
endif
if (staggertimestep) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)-adpmepr(i,j,bi,bj)
adpmepr(i,j,bi,bj) = 0.d0
end do
end do
endif
if (userealfreshwaterflux) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)*maskinc(i,j,bi,bj)
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
adsaltflux(i,j,bi,bj) = adsaltflux(i,j,bi,bj)-
$adsurfaceforcings(i,j,bi,bj)*mass2runit
adqnet(i,j,bi,bj) = adqnet(i,j,bi,bj)-adsurfaceforcingt(i,j,
$bi,bj)*recip_cp*mass2runit
adqnetm(i,j,bi,bj) = adqnetm(i,j,bi,bj)-adsurfaceforcingt(i,j,
$bi,bj)*recip_cp*mass2runit
adfv(i,j,bi,bj) = adfv(i,j,bi,bj)+adsurfaceforcingv(i,j,bi,bj)
$*mass2runit
adsurfaceforcingv(i,j,bi,bj) = 0.d0
adfu(i,j,bi,bj) = adfu(i,j,bi,bj)+adsurfaceforcingu(i,j,bi,bj)
$*mass2runit
adsurfaceforcingu(i,j,bi,bj) = 0.d0
end do
end do
if (dothetaclimrelax .or. dosaltclimrelax) then
do j = jmin, jmax
do i = imin, imax
adsalt(i,j,ks,bi,bj) = adsalt(i,j,ks,bi,bj)-
$adsurfaceforcings(i,j,bi,bj)*lambdasaltclimrelax(i,j,bi,bj)*drf(
$ks)*hfacc(i,j,ks,bi,bj)
adsss(i,j,bi,bj) = adsss(i,j,bi,bj)+adsurfaceforcings(i,j,
$bi,bj)*lambdasaltclimrelax(i,j,bi,bj)*drf(ks)*hfacc(i,j,ks,bi,bj)
adsurfaceforcings(i,j,bi,bj) = 0.d0
adsst(i,j,bi,bj) = adsst(i,j,bi,bj)+adsurfaceforcingt(i,j,
$bi,bj)*lambdathetaclimrelax(i,j,bi,bj)*drf(ks)*hfacc(i,j,ks,bi,bj)
adtheta(i,j,ks,bi,bj) = adtheta(i,j,ks,bi,bj)-
$adsurfaceforcingt(i,j,bi,bj)*lambdathetaclimrelax(i,j,bi,bj)*drf(
$ks)*hfacc(i,j,ks,bi,bj)
adsurfaceforcingt(i,j,bi,bj) = 0.d0
end do
end do
else
do j = jmin, jmax
do i = imin, imax
adsurfaceforcings(i,j,bi,bj) = 0.d0
adsurfaceforcingt(i,j,bi,bj) = 0.d0
end do
end do
endif
end
subroutine adexternal_forcing_t( bi, bj, klev )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adssurfcor
double precision adtsurfcor
common /adsurf_correc/ adtsurfcor, adssurfcor
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer klev
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer ksurface
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (fluidisair) then
ksurface = 0
else if (usingpcoords) then
ksurface = nr
else
ksurface = 1
endif
if (linfsconservetr) then
do j = 1, sny
do i = 1, snx
if (klev .eq. ksurfc(i,j,bi,bj)) then
adtsurfcor = adtsurfcor+adgt(i,j,klev,bi,bj)*recip_drf(
$klev)*recip_hfacc(i,j,klev,bi,bj)
endif
end do
end do
endif
if (klev .eq. ksurface) then
do j = 1, sny
do i = 1, snx
adsurfaceforcingt(i,j,bi,bj) = adsurfaceforcingt(i,j,bi,bj)+
$adgt(i,j,klev,bi,bj)*recip_drf(klev)*recip_hfacc(i,j,klev,bi,bj)
end do
end do
endif
end
subroutine adexternal_forcing_u( bi, bj, klev )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer klev
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer ksurface
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (fluidisair) then
ksurface = 0
else if (usingpcoords) then
ksurface = nr
else
ksurface = 1
endif
if (klev .eq. ksurface) then
do j = 0, sny+1
do i = 1, snx+1
adsurfaceforcingu(i,j,bi,bj) = adsurfaceforcingu(i,j,bi,bj)+
$adgu(i,j,klev,bi,bj)*fofacmom*recip_drf(klev)*recip_hfacw(i,j,
$klev,bi,bj)
end do
end do
endif
end
subroutine adexternal_forcing_v( bi, bj, klev )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer klev
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer ksurface
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (fluidisair) then
ksurface = 0
else if (usingpcoords) then
ksurface = nr
else
ksurface = 1
endif
if (klev .eq. ksurface) then
do j = 1, sny+1
do i = 0, snx+1
adsurfaceforcingv(i,j,bi,bj) = adsurfaceforcingv(i,j,bi,bj)+
$adgv(i,j,klev,bi,bj)*fofacmom*recip_drf(klev)*recip_hfacs(i,j,
$klev,bi,bj)
end do
end do
endif
end
subroutine adfill_cs_corner_tr_rl( fill4dir, withsigns, adtrfld )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
C==============================================
C declare arguments
C==============================================
double precision adtrfld(1-olx:snx+olx,1-oly:sny+oly)
integer fill4dir
logical withsigns
C==============================================
C declare local variables
C==============================================
double precision adtrfldh
double precision adtrfldi
double precision adtrfldj
double precision adtrfldk
double precision adtrfldl
double precision adtrfldm
double precision adtrfldn
double precision adtrfldo
integer i
integer j
double precision negone
logical northeastcorner
logical northwestcorner
logical southeastcorner
logical southwestcorner
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
negone = 1.
if (withsigns) then
negone = -1.
endif
if (usecubedsphereexchange) then
southwestcorner = .true.
southeastcorner = .true.
northwestcorner = .true.
northeastcorner = .true.
if (fill4dir .eq. 0) then
if (northeastcorner) then
do j = 1, oly
do i = 1, olx
adtrfld(snx+i,sny+j) = 0.d0
end do
end do
endif
if (northwestcorner) then
do j = 1, oly
do i = 1, olx
adtrfld(1-i,sny+j) = 0.d0
end do
end do
endif
if (southeastcorner) then
do j = 1, oly
do i = 1, olx
adtrfld(snx+i,1-j) = 0.d0
end do
end do
endif
if (southwestcorner) then
do j = 1, oly
do i = 1, olx
adtrfld(1-i,1-j) = 0.d0
end do
end do
endif
else if (fill4dir .eq. 1) then
if (northeastcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldl = adtrfld(snx+i,sny+j)
adtrfld(snx+i,sny+j) = 0.d0
adtrfld(snx+j,sny+1-i) = adtrfld(snx+j,sny+1-i)+
$adtrfldl*negone
end do
end do
endif
if (northwestcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldm = adtrfld(1-i,sny+j)
adtrfld(1-i,sny+j) = 0.d0
adtrfld(1-j,sny+1-i) = adtrfld(1-j,sny+1-i)+adtrfldm*
$negone
end do
end do
endif
if (southeastcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldn = adtrfld(snx+i,1-j)
adtrfld(snx+i,1-j) = 0.d0
adtrfld(snx+j,i) = adtrfld(snx+j,i)+adtrfldn*negone
end do
end do
endif
if (southwestcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldo = adtrfld(1-i,1-j)
adtrfld(1-i,1-j) = 0.d0
adtrfld(1-j,i) = adtrfld(1-j,i)+adtrfldo*negone
end do
end do
endif
else if (fill4dir .eq. 2) then
if (northeastcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldh = adtrfld(snx+i,sny+j)
adtrfld(snx+i,sny+j) = 0.d0
adtrfld(snx+1-j,sny+i) = adtrfld(snx+1-j,sny+i)+
$adtrfldh*negone
end do
end do
endif
if (northwestcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldi = adtrfld(1-i,sny+j)
adtrfld(1-i,sny+j) = 0.d0
adtrfld(j,sny+i) = adtrfld(j,sny+i)+adtrfldi*negone
end do
end do
endif
if (southeastcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldj = adtrfld(snx+i,1-j)
adtrfld(snx+i,1-j) = 0.d0
adtrfld(snx+1-j,1-i) = adtrfld(snx+1-j,1-i)+adtrfldj*
$negone
end do
end do
endif
if (southwestcorner) then
do j = 1, oly
do i = olx, 1, -1
adtrfldk = adtrfld(1-i,1-j)
adtrfld(1-i,1-j) = 0.d0
adtrfld(j,1-i) = adtrfld(j,1-i)+adtrfldk*negone
end do
end do
endif
endif
endif
end
subroutine adfind_bulkmod( imin, imax, jmin, jmax, locpres,
$adlocpres, tfld, adtfld, sfld, adsfld, adbulkmod )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision sitobar
parameter ( sitobar = 0.00001d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision eosjmdcfw(6)
double precision eosjmdckfw(5)
double precision eosjmdckp(14)
double precision eosjmdcksw(7)
double precision eosjmdcsw(9)
common /parm_eos_jmd95/ eosjmdcfw, eosjmdcsw, eosjmdckfw,
$eosjmdcksw, eosjmdckp
C==============================================
C declare arguments
C==============================================
double precision adbulkmod(1-olx:snx+olx,1-oly:sny+oly)
double precision adlocpres(1-olx:snx+olx,1-oly:sny+oly)
double precision adsfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adtfld(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
double precision locpres(1-olx:snx+olx,1-oly:sny+oly)
double precision sfld(1-olx:snx+olx,1-oly:sny+oly)
double precision tfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adbmfresh
double precision adbmpres
double precision adbmsalt
double precision adp
double precision adp2
double precision ads
double precision ads3o2
double precision adt
double precision adt2
double precision adt3
double precision adt4
integer i
integer j
double precision p
double precision p2
double precision s
double precision s3o2
double precision t
double precision t2
double precision t3
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adbmfresh = 0.d0
adbmpres = 0.d0
adbmsalt = 0.d0
adp = 0.d0
adp2 = 0.d0
ads = 0.d0
ads3o2 = 0.d0
adt = 0.d0
adt2 = 0.d0
adt3 = 0.d0
adt4 = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmax, jmin, -1
do i = imax, imin, -1
t = tfld(i,j)
t2 = t*t
t3 = t2*t
s = sfld(i,j)
if (s .gt. 0.d0) then
s3o2 = s*sqrt(s)
else
s = 0.d0
s3o2 = 0.d0
endif
p = locpres(i,j)*sitobar
p2 = p*p
adbmfresh = adbmfresh+adbulkmod(i,j)
adbmpres = adbmpres+adbulkmod(i,j)
adbmsalt = adbmsalt+adbulkmod(i,j)
adbulkmod(i,j) = 0.d0
adp = adp+adbmpres*(eosjmdckp(1)+eosjmdckp(2)*t+eosjmdckp(3)*
$t2+eosjmdckp(4)*t3+s*(eosjmdckp(5)+eosjmdckp(6)*t+eosjmdckp(7)*t2)
$+s3o2*eosjmdckp(8))
adp2 = adp2+adbmpres*(eosjmdckp(9)+eosjmdckp(10)*t+eosjmdckp(
$11)*t2+s*(eosjmdckp(12)+eosjmdckp(13)*t+eosjmdckp(14)*t2))
ads = ads+adbmpres*(p*(eosjmdckp(5)+eosjmdckp(6)*t+eosjmdckp(
$7)*t2)+p2*(eosjmdckp(12)+eosjmdckp(13)*t+eosjmdckp(14)*t2))
ads3o2 = ads3o2+adbmpres*p*eosjmdckp(8)
adt = adt+adbmpres*(p*(eosjmdckp(2)+s*eosjmdckp(6))+p2*(
$eosjmdckp(10)+s*eosjmdckp(13)))
adt2 = adt2+adbmpres*(p*(eosjmdckp(3)+s*eosjmdckp(7))+p2*(
$eosjmdckp(11)+s*eosjmdckp(14)))
adt3 = adt3+adbmpres*p*eosjmdckp(4)
adbmpres = 0.d0
ads = ads+adbmsalt*(eosjmdcksw(1)+eosjmdcksw(2)*t+eosjmdcksw(
$3)*t2+eosjmdcksw(4)*t3)
ads3o2 = ads3o2+adbmsalt*(eosjmdcksw(5)+eosjmdcksw(6)*t+
$eosjmdcksw(7)*t2)
adt = adt+adbmsalt*(s*eosjmdcksw(2)+s3o2*eosjmdcksw(6))
adt2 = adt2+adbmsalt*(s*eosjmdcksw(3)+s3o2*eosjmdcksw(7))
adt3 = adt3+adbmsalt*s*eosjmdcksw(4)
adbmsalt = 0.d0
adt = adt+adbmfresh*eosjmdckfw(2)
adt2 = adt2+adbmfresh*eosjmdckfw(3)
adt3 = adt3+adbmfresh*eosjmdckfw(4)
adt4 = adt4+adbmfresh*eosjmdckfw(5)
adbmfresh = 0.d0
adp = adp+2*adp2*p
adp2 = 0.d0
adlocpres(i,j) = adlocpres(i,j)+adp*sitobar
adp = 0.d0
s = sfld(i,j)
if (s .gt. 0.d0) then
ads = ads+ads3o2*(s*(1./(2.*sqrt(s)))+sqrt(s))
ads3o2 = 0.d0
else
ads3o2 = 0.d0
ads = 0.d0
endif
adsfld(i,j) = adsfld(i,j)+ads
ads = 0.d0
adt = adt+adt4*t3
adt3 = adt3+adt4*t
adt4 = 0.d0
adt = adt+adt3*t2
adt2 = adt2+adt3*t
adt3 = 0.d0
adt = adt+2*adt2*t
adt2 = 0.d0
adtfld(i,j) = adtfld(i,j)+adt
adt = 0.d0
end do
end do
end
subroutine adfind_rho_2d( imin, imax, jmin, jmax, kref, tfld,
$adtfld, sfld, adsfld, adrholoc, bi, bj )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision sitobar
parameter ( sitobar = 0.00001d0 )
C==============================================
C declare common blocks
C==============================================
character*(6) equationofstate
double precision sbeta
double precision talpha
common /parm_eos_lin/ talpha, sbeta, equationofstate
double precision eosc(9,nr+1)
double precision eosrefs(nr+1)
double precision eosreft(nr+1)
double precision eossig0(nr+1)
common /parm_eos_nl/ eosc, eossig0, eosreft, eosrefs
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adrholoc(1-olx:snx+olx,1-oly:sny+oly)
double precision adsfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adtfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer kref
double precision sfld(1-olx:snx+olx,1-oly:sny+oly)
double precision tfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adbulkmod(1-olx:snx+olx,1-oly:sny+oly)
double precision addeltasig
double precision adlocpres(1-olx:snx+olx,1-oly:sny+oly)
double precision adrhoden(1-olx:snx+olx,1-oly:sny+oly)
double precision adrhonum(1-olx:snx+olx,1-oly:sny+oly)
double precision adrhop0(1-olx:snx+olx,1-oly:sny+oly)
double precision adsp
double precision adtp
double precision bulkmod(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
double precision locpres(1-olx:snx+olx,1-oly:sny+oly)
integer mythid
double precision refsalt
double precision reftemp
double precision rhoden(1-olx:snx+olx,1-oly:sny+oly)
double precision rhonum(1-olx:snx+olx,1-oly:sny+oly)
double precision rhop0(1-olx:snx+olx,1-oly:sny+oly)
double precision sp
double precision tp
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adbulkmod(ip1,ip2) = 0.d0
end do
end do
addeltasig = 0.d0
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adlocpres(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrhoden(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrhonum(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrhop0(ip1,ip2) = 0.d0
end do
end do
adsp = 0.d0
adtp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (equationofstate .eq. 'LINEAR') then
do j = jmin, jmax
do i = imin, imax
adsfld(i,j) = adsfld(i,j)+adrholoc(i,j)*rhonil*sbeta
adtfld(i,j) = adtfld(i,j)-adrholoc(i,j)*rhonil*talpha
adrholoc(i,j) = 0.d0
end do
end do
else if (equationofstate .eq. 'POLY3') then
reftemp = eosreft(kref)
refsalt = eosrefs(kref)
do j = jmax, jmin, -1
addeltasig = 0.d0
adsp = 0.d0
adtp = 0.d0
do i = imax, imin, -1
addeltasig = 0.d0
adsp = 0.d0
adtp = 0.d0
tp = tfld(i,j)-reftemp
sp = sfld(i,j)-refsalt
addeltasig = addeltasig+adrholoc(i,j)
adrholoc(i,j) = 0.d0
adsp = adsp+addeltasig*((eosc(9,kref)*sp+eosc(5,kref))*sp+
$eosc(2,kref)+(eosc(9,kref)*sp+eosc(5,kref)+eosc(9,kref)*sp)*sp+(
$eosc(7,kref)*tp+eosc(8,kref)*sp+eosc(4,kref)+eosc(8,kref)*sp)*tp)
adtp = adtp+addeltasig*((eosc(6,kref)*tp+eosc(7,kref)*sp+
$eosc(3,kref))*tp+(eosc(8,kref)*sp+eosc(4,kref))*sp+eosc(1,kref)+(
$eosc(6,kref)*tp+eosc(7,kref)*sp+eosc(3,kref)+eosc(6,kref)*tp)*tp)
addeltasig = 0.d0
adsfld(i,j) = adsfld(i,j)+adsp
adsp = 0.d0
adtfld(i,j) = adtfld(i,j)+adtp
adtp = 0.d0
end do
end do
else if (equationofstate(1:5) .eq. 'JMD95' .or. equationofstate
$.eq. 'UNESCO') then
call pressure_for_eos( bi,bj,imin,imax,jmin,jmax,kref,locpres,
$mythid )
call find_rhop0( imin,imax,jmin,jmax,tfld,sfld,rhop0,mythid )
call find_bulkmod( imin,imax,jmin,jmax,locpres,tfld,sfld,
$bulkmod,mythid )
do j = jmin, jmax
do i = imin, imax
adbulkmod(i,j) = adbulkmod(i,j)-adrholoc(i,j)*(rhop0(i,j)*(
$locpres(i,j)*sitobar/(bulkmod(i,j)*bulkmod(i,j)))/((1.d0-locpres(
$i,j)*sitobar/bulkmod(i,j))*(1.d0-locpres(i,j)*sitobar/bulkmod(i,j)
$)))
adlocpres(i,j) = adlocpres(i,j)+adrholoc(i,j)*(rhop0(i,j)*(
$sitobar/bulkmod(i,j))/((1.d0-locpres(i,j)*sitobar/bulkmod(i,j))*(
$1.d0-locpres(i,j)*sitobar/bulkmod(i,j))))
adrhop0(i,j) = adrhop0(i,j)+adrholoc(i,j)/(1.d0-locpres(i,j)
$*sitobar/bulkmod(i,j))
adrholoc(i,j) = 0.d0
end do
end do
call adfind_bulkmod( imin,imax,jmin,jmax,locpres,adlocpres,tfld,
$adtfld,sfld,adsfld,adbulkmod )
call adfind_rhop0( imin,imax,jmin,jmax,tfld,adtfld,sfld,adsfld,
$adrhop0 )
call adpressure_for_eos( bi,bj,kref,adlocpres )
else if (equationofstate .eq. 'MDJWF') then
call pressure_for_eos( bi,bj,imin,imax,jmin,jmax,kref,locpres,
$mythid )
call find_rhonum( imin,imax,jmin,jmax,locpres,tfld,sfld,rhonum,
$mythid )
call find_rhoden( imin,imax,jmin,jmax,locpres,tfld,sfld,rhoden,
$mythid )
do j = jmin, jmax
do i = imin, imax
adrhoden(i,j) = adrhoden(i,j)+adrholoc(i,j)*rhonum(i,j)
adrhonum(i,j) = adrhonum(i,j)+adrholoc(i,j)*rhoden(i,j)
adrholoc(i,j) = 0.d0
end do
end do
call adfind_rhoden( imin,imax,jmin,jmax,locpres,adlocpres,tfld,
$adtfld,sfld,adsfld,adrhoden )
call adfind_rhonum( imin,imax,jmin,jmax,locpres,adlocpres,tfld,
$adtfld,sfld,adsfld,adrhonum )
call adpressure_for_eos( bi,bj,kref,adlocpres )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrholoc(i,j) = 0.d0
end do
end do
end
subroutine adfind_rhoden( imin, imax, jmin, jmax, locpres,
$adlocpres, tfld, adtfld, sfld, adsfld, adrhoden )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
double precision epsln
parameter ( epsln = 0.d0 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision sitodbar
parameter ( sitodbar = 0.0001d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision eosmdjwfden(0:12)
double precision eosmdjwfnum(0:11)
common /parm_eos_mdjwf/ eosmdjwfnum, eosmdjwfden
C==============================================
C declare arguments
C==============================================
double precision adlocpres(1-olx:snx+olx,1-oly:sny+oly)
double precision adrhoden(1-olx:snx+olx,1-oly:sny+oly)
double precision adsfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adtfld(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
double precision locpres(1-olx:snx+olx,1-oly:sny+oly)
double precision sfld(1-olx:snx+olx,1-oly:sny+oly)
double precision tfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adden
double precision adp1
double precision adp1t1
double precision ads1
double precision adsp5
double precision adt1
double precision adt2
double precision den
integer i
integer j
double precision p1
double precision p1t1
double precision s1
double precision sp5
double precision t1
double precision t2
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adden = 0.d0
adp1 = 0.d0
adp1t1 = 0.d0
ads1 = 0.d0
adsp5 = 0.d0
adt1 = 0.d0
adt2 = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmax, jmin, -1
do i = imax, imin, -1
t1 = tfld(i,j)
t2 = t1*t1
s1 = sfld(i,j)
if (s1 .gt. 0.d0) then
sp5 = sqrt(s1)
else
s1 = 0.d0
sp5 = 0.d0
endif
p1 = locpres(i,j)*sitodbar
p1t1 = p1*t1
den = eosmdjwfden(0)+t1*(eosmdjwfden(1)+t1*(eosmdjwfden(2)+t1*
$(eosmdjwfden(3)+t1*eosmdjwfden(4))))+s1*(eosmdjwfden(5)+t1*(
$eosmdjwfden(6)+eosmdjwfden(7)*t2)+sp5*(eosmdjwfden(8)+eosmdjwfden(
$9)*t2))+p1*(eosmdjwfden(10)+p1t1*(eosmdjwfden(11)*t2+eosmdjwfden(
$12)*p1))
adden = adden-adrhoden(i,j)/((epsln+den)*(epsln+den))
adrhoden(i,j) = 0.d0
adp1 = adp1+adden*(p1*p1t1*eosmdjwfden(12)+eosmdjwfden(10)+
$p1t1*(eosmdjwfden(11)*t2+eosmdjwfden(12)*p1))
adp1t1 = adp1t1+adden*p1*(eosmdjwfden(11)*t2+eosmdjwfden(12)*
$p1)
ads1 = ads1+adden*(eosmdjwfden(5)+t1*(eosmdjwfden(6)+
$eosmdjwfden(7)*t2)+sp5*(eosmdjwfden(8)+eosmdjwfden(9)*t2))
adsp5 = adsp5+adden*s1*(eosmdjwfden(8)+eosmdjwfden(9)*t2)
adt1 = adt1+adden*(t1*(t1*(t1*eosmdjwfden(4)+eosmdjwfden(3)+
$t1*eosmdjwfden(4))+eosmdjwfden(2)+t1*(eosmdjwfden(3)+t1*
$eosmdjwfden(4)))+eosmdjwfden(1)+t1*(eosmdjwfden(2)+t1*(
$eosmdjwfden(3)+t1*eosmdjwfden(4)))+s1*(eosmdjwfden(6)+eosmdjwfden(
$7)*t2))
adt2 = adt2+adden*(s1*(t1*eosmdjwfden(7)+sp5*eosmdjwfden(9))+
$p1*p1t1*eosmdjwfden(11))
adden = 0.d0
adp1 = adp1+adp1t1*t1
adt1 = adt1+adp1t1*p1
adp1t1 = 0.d0
adlocpres(i,j) = adlocpres(i,j)+adp1*sitodbar
adp1 = 0.d0
s1 = sfld(i,j)
if (s1 .gt. 0.d0) then
ads1 = ads1+adsp5*(1./(2.*sqrt(s1)))
adsp5 = 0.d0
else
adsp5 = 0.d0
ads1 = 0.d0
endif
adsfld(i,j) = adsfld(i,j)+ads1
ads1 = 0.d0
adt1 = adt1+2*adt2*t1
adt2 = 0.d0
adtfld(i,j) = adtfld(i,j)+adt1
adt1 = 0.d0
end do
end do
end
subroutine adfind_rhonum( imin, imax, jmin, jmax, locpres,
$adlocpres, tfld, adtfld, sfld, adsfld, adrhonum )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision sitodbar
parameter ( sitodbar = 0.0001d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision eosmdjwfden(0:12)
double precision eosmdjwfnum(0:11)
common /parm_eos_mdjwf/ eosmdjwfnum, eosmdjwfden
C==============================================
C declare arguments
C==============================================
double precision adlocpres(1-olx:snx+olx,1-oly:sny+oly)
double precision adrhonum(1-olx:snx+olx,1-oly:sny+oly)
double precision adsfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adtfld(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
double precision locpres(1-olx:snx+olx,1-oly:sny+oly)
double precision sfld(1-olx:snx+olx,1-oly:sny+oly)
double precision tfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adp1
double precision ads1
double precision adt1
double precision adt2
integer i
integer j
double precision p1
double precision s1
double precision t1
double precision t2
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adp1 = 0.d0
ads1 = 0.d0
adt1 = 0.d0
adt2 = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmax, jmin, -1
adp1 = 0.d0
ads1 = 0.d0
adt1 = 0.d0
adt2 = 0.d0
do i = imax, imin, -1
adp1 = 0.d0
ads1 = 0.d0
adt1 = 0.d0
adt2 = 0.d0
t1 = tfld(i,j)
t2 = t1*t1
s1 = sfld(i,j)
p1 = locpres(i,j)*sitodbar
adp1 = adp1+adrhonum(i,j)*(p1*(eosmdjwfnum(10)+eosmdjwfnum(11)
$*t2)+eosmdjwfnum(7)+eosmdjwfnum(8)*t2+eosmdjwfnum(9)*s1+p1*(
$eosmdjwfnum(10)+eosmdjwfnum(11)*t2))
ads1 = ads1+adrhonum(i,j)*(s1*eosmdjwfnum(6)+eosmdjwfnum(4)+
$eosmdjwfnum(5)*t1+eosmdjwfnum(6)*s1+p1*eosmdjwfnum(9))
adt1 = adt1+adrhonum(i,j)*(t1*(t1*eosmdjwfnum(3)+eosmdjwfnum(
$2)+eosmdjwfnum(3)*t1)+eosmdjwfnum(1)+t1*(eosmdjwfnum(2)+
$eosmdjwfnum(3)*t1)+s1*eosmdjwfnum(5))
adt2 = adt2+adrhonum(i,j)*p1*(eosmdjwfnum(8)+p1*eosmdjwfnum(
$11))
adrhonum(i,j) = 0.d0
adlocpres(i,j) = adlocpres(i,j)+adp1*sitodbar
adp1 = 0.d0
adsfld(i,j) = adsfld(i,j)+ads1
ads1 = 0.d0
adt1 = adt1+2*adt2*t1
adt2 = 0.d0
adtfld(i,j) = adtfld(i,j)+adt1
adt1 = 0.d0
end do
end do
end
subroutine adfind_rhop0( imin, imax, jmin, jmax, tfld, adtfld,
$sfld, adsfld, adrhop0 )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision eosjmdcfw(6)
double precision eosjmdckfw(5)
double precision eosjmdckp(14)
double precision eosjmdcksw(7)
double precision eosjmdcsw(9)
common /parm_eos_jmd95/ eosjmdcfw, eosjmdcsw, eosjmdckfw,
$eosjmdcksw, eosjmdckp
C==============================================
C declare arguments
C==============================================
double precision adrhop0(1-olx:snx+olx,1-oly:sny+oly)
double precision adsfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adtfld(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
double precision sfld(1-olx:snx+olx,1-oly:sny+oly)
double precision tfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adrfresh
double precision adrsalt
double precision ads
double precision ads3o2
double precision adt
double precision adt2
double precision adt3
double precision adt4
integer i
integer j
double precision s
double precision s3o2
double precision t
double precision t2
double precision t3
double precision t4
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrfresh = 0.d0
adrsalt = 0.d0
ads = 0.d0
ads3o2 = 0.d0
adt = 0.d0
adt2 = 0.d0
adt3 = 0.d0
adt4 = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmax, jmin, -1
do i = imax, imin, -1
t = tfld(i,j)
t2 = t*t
t3 = t2*t
t4 = t3*t
s = sfld(i,j)
if (s .gt. 0.d0) then
s3o2 = s*sqrt(s)
else
s = 0.d0
s3o2 = 0.d0
endif
adrfresh = adrfresh+adrhop0(i,j)
adrsalt = adrsalt+adrhop0(i,j)
adrhop0(i,j) = 0.d0
ads = ads+adrsalt*(eosjmdcsw(1)+eosjmdcsw(2)*t+eosjmdcsw(3)*
$t2+eosjmdcsw(4)*t3+eosjmdcsw(5)*t4+2*eosjmdcsw(9)*s)
ads3o2 = ads3o2+adrsalt*(eosjmdcsw(6)+eosjmdcsw(7)*t+
$eosjmdcsw(8)*t2)
adt = adt+adrsalt*(s*eosjmdcsw(2)+s3o2*eosjmdcsw(7))
adt2 = adt2+adrsalt*(s*eosjmdcsw(3)+s3o2*eosjmdcsw(8))
adt3 = adt3+adrsalt*s*eosjmdcsw(4)
adt4 = adt4+adrsalt*s*eosjmdcsw(5)
adrsalt = 0.d0
adt = adt+adrfresh*(eosjmdcfw(2)+eosjmdcfw(6)*t4)
adt2 = adt2+adrfresh*eosjmdcfw(3)
adt3 = adt3+adrfresh*eosjmdcfw(4)
adt4 = adt4+adrfresh*(eosjmdcfw(5)+eosjmdcfw(6)*t)
adrfresh = 0.d0
s = sfld(i,j)
if (s .gt. 0.d0) then
ads = ads+ads3o2*(s*(1./(2.*sqrt(s)))+sqrt(s))
ads3o2 = 0.d0
else
ads3o2 = 0.d0
ads = 0.d0
endif
adsfld(i,j) = adsfld(i,j)+ads
ads = 0.d0
adt = adt+adt4*t3
adt3 = adt3+adt4*t
adt4 = 0.d0
adt = adt+adt3*t2
adt2 = adt2+adt3*t
adt3 = 0.d0
adt = adt+2*adt2*t
adt2 = 0.d0
adtfld(i,j) = adtfld(i,j)+adt
adt = 0.d0
end do
end do
end
subroutine adforward_step( iloop, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_empmr_34h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadempmr/ comlev1_empmr_34h
real*8 comlev1_kwx_41h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadkwx/ comlev1_kwx_41h
real*8 comlev1_kwy_42h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadkwy/ comlev1_kwy_42h
real*8 comlev1_rhoinsitu_36h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy,30)
common /cadrhoinsitu/ comlev1_rhoinsitu_36h
real*8 comlev1_totphihyd_45h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy,30)
common /cadtotphihyd/ comlev1_totphihyd_45h
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision empmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_empmr/ empmr
double precision kwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_wtensor/ kwx, kwy, kwz
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer i_got_signal
common /sig_i/ i_got_signal
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer iloop
integer mythid
C==============================================
C declare local variables
C==============================================
integer ip1
integer ip2
integer ip3
integer ip4
integer ip5
logical modelend
integer myiter
double precision mytime
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
call autodiff_inadmode_unset( mythid )
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
empmr(ip1,ip2,ip3,ip4) = comlev1_empmr_34h(ip1,ip2,ip3,
$ip4,ikey_dynamics)
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
rhoinsitu(ip1,ip2,ip3,ip4,ip5) = comlev1_rhoinsitu_36h(
$ip1,ip2,ip3,ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kwx(ip1,ip2,ip3,ip4,ip5) = comlev1_kwx_41h(ip1,ip2,ip3,
$ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kwy(ip1,ip2,ip3,ip4,ip5) = comlev1_kwy_42h(ip1,ip2,ip3,
$ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
myiter = niter0+iloop
mytime = starttime+deltatclock*float(iloop)
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
totphihyd(ip1,ip2,ip3,ip4,ip5) = comlev1_totphihyd_45h(
$ip1,ip2,ip3,ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
call do_statevars_tave( mytime,myiter,mythid )
if ( .not. useoffline) then
call monitor( mytime,myiter,mythid )
endif
modelend = mytime .eq. endtime .or. myiter .eq. nenditer
if (usesigreg) then
modelend = modelend .or. i_got_signal .gt. 0
endif
call do_the_model_io( modelend,mytime,myiter,mythid )
call do_write_pickup( modelend,mytime,myiter,mythid )
call adautodiff_inadmode_set( mythid )
call adcost_tile( mytime,mythid )
if ( .not. useoffline) then
call admonitor( mytime,myiter,mythid )
endif
call addo_fields_blocking_exchanges( mythid )
call adtracers_correction_step( mytime,mythid )
if (staggertimestep) then
call adthermodynamics( myiter,mythid )
call addo_stagger_fields_exchanges( mythid )
endif
if (exactconserv) then
call adupdate_etah( mythid )
endif
call admomentum_correction_step( mytime,mythid )
if (momstepping) then
call adsolve_for_pressure( mythid )
endif
myiter = niter0+iloop-1
call addynamics( myiter,mythid )
if (implicitintgravwave) then
call addo_stagger_fields_exchanges( mythid )
endif
myiter = niter0+iloop-1
if ( .not. staggertimestep) then
call adthermodynamics( myiter,mythid )
endif
call addo_oceanic_phys( mythid )
myiter = niter0+iloop-1
if (myiter .eq. niter0) then
call adctrl_map_forcing( mythid )
endif
myiter = niter0+iloop-1
mytime = starttime+float(iloop-1)*deltatclock
call adload_fields_driver( mytime,myiter,mythid )
call adautodiff_inadmode_unset( mythid )
end
subroutine mdforward_step( iloop, mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_cmeanthetauvel_28h(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy,30)
common /cadcmeanthetauvel/ comlev1_cmeanthetauvel_28h
real*8 comlev1_cmeanthetavvel_29h(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy,30)
common /cadcmeanthetavvel/ comlev1_cmeanthetavvel_29h
real*8 comlev1_empmr_34h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadempmr/ comlev1_empmr_34h
real*8 comlev1_empmr0_20h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadempmr0/ comlev1_empmr0_20h
real*8 comlev1_empmr1_21h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadempmr1/ comlev1_empmr1_21h
real*8 comlev1_ivdconvcount_40h(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy,30)
common /cadivdconvcounu/ comlev1_ivdconvcount_40h
real*8 comlev1_kwz_43h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadkw2/ comlev1_kwz_43h
real*8 comlev1_kwx_41h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadkwx/ comlev1_kwx_41h
real*8 comlev1_kwy_42h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadkwy/ comlev1_kwy_42h
real*8 comlev1_pmepr_35h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadpmeps/ comlev1_pmepr_35h
real*8 comlev1_pmepr_9h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadpmept/ comlev1_pmepr_9h
real*8 comlev1_qnet0_18h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadqnet0/ comlev1_qnet0_18h
real*8 comlev1_qnet1_19h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadqnet1/ comlev1_qnet1_19h
real*8 comlev1_rhoinsitu_36h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy,30)
common /cadrhoinsitu/ comlev1_rhoinsitu_36h
real*8 comlev1_salt_44h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadsal2/ comlev1_salt_44h
real*8 comlev1_saltflux0_26h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,
$30)
common /cadsaltflux0/ comlev1_saltflux0_26h
real*8 comlev1_saltflux1_27h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,
$30)
common /cadsaltflux1/ comlev1_saltflux1_27h
real*8 comlev1_sss0_24h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadsss0/ comlev1_sss0_24h
real*8 comlev1_sss1_25h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadsss1/ comlev1_sss1_25h
real*8 comlev1_sst0_22h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadsst0/ comlev1_sst0_22h
real*8 comlev1_sst1_23h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadsst1/ comlev1_sst1_23h
real*8 comlev1_surfaceforcingtice_39h(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy,30)
common /cadsurfaceforcingticf/ comlev1_surfaceforcingtice_39h
real*8 comlev1_surfaceforcingtice_33h(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy,30)
common /cadsurfaceforcingticg/ comlev1_surfaceforcingtice_33h
real*8 comlev1_surfaceforcingt_38h(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy,30)
common /cadsurfaceforcingw/ comlev1_surfaceforcingt_38h
real*8 comlev1_surfaceforcings_37h(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy,30)
common /cadsurfaceforcingx/ comlev1_surfaceforcings_37h
real*8 comlev1_taux0_14h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadtaux0/ comlev1_taux0_14h
real*8 comlev1_taux1_15h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadtaux1/ comlev1_taux1_15h
real*8 comlev1_tauy0_16h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadtauy0/ comlev1_tauy0_16h
real*8 comlev1_tauy1_17h(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy,30)
common /cadtauy1/ comlev1_tauy1_17h
real*8 comlev1_theta_30h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,
$30)
common /cadthetl/ comlev1_theta_30h
real*8 comlev1_totphihyd_45h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy,30)
common /cadtotphihyd/ comlev1_totphihyd_45h
real*8 comlev1_totphihyd_8h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy,30)
common /cadtotphihyg/ comlev1_totphihyd_8h
real*8 comlev1_unm1_12h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadunm1/ comlev1_unm1_12h
real*8 comlev1_uveld_10h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,
$30)
common /caduvele/ comlev1_uveld_10h
real*8 comlev1_uvel_31h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /caduveo/ comlev1_uvel_31h
real*8 comlev1_vnm1_13h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadvnm1/ comlev1_vnm1_13h
real*8 comlev1_vveld_11h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,
$30)
common /cadvvele/ comlev1_vveld_11h
real*8 comlev1_vvel_32h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadvveo/ comlev1_vvel_32h
double precision cmeantheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision cmeanthetauvel(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision cmeanthetavvel(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision cmeanuvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision cmeanvvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /cost_mean_r/ cmeantheta, cmeanuvel, cmeanvvel,
$cmeanthetauvel, cmeanthetavvel
double precision etanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision unm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_cd/ uveld, vveld, etanm1, unm1, vnm1
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision detahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision etahnm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision pmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /exact_eta_local/ etahnm1, detahdt, pmepr
double precision empmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_empmr/ empmr
double precision kwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_wtensor/ kwx, kwy, kwz
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer i_got_signal
common /sig_i/ i_got_signal
double precision surfaceforcings(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
double precision surfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
double precision surfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision surfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
double precision surfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /surface_forcing/ surfaceforcingu, surfaceforcingv,
$surfaceforcingt, surfaceforcings, surfaceforcingtice
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
double precision empmr0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision empmr1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision qnet0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision qnet1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision saltflux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision saltflux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision sss0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision sss1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision sst0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision sst1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision taux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision taux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tauy0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tauy1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /tdfields/ taux0, tauy0, qnet0, empmr0, sst0, sss0, taux1,
$tauy1, qnet1, empmr1, sst1, sss1, saltflux0, saltflux1
C==============================================
C declare arguments
C==============================================
integer iloop
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer iq0
integer iq1
integer iq2
integer iq3
integer iq4
integer iq5
integer iq6
integer iq7
integer iq8
integer iq9
integer iqa
integer iqb
integer iqc
integer iqd
integer iqe
integer iqf
integer iqg
integer iqh
integer iqi
integer iqj
integer iqk
integer iql
integer iqm
integer iqn
integer iqo
integer iqp
integer iqq
integer iqr
integer iqs
integer iqt
integer iqu
integer iqv
integer iqw
integer iqx
integer iqy
integer iqz
integer ir0
integer ir1
integer ir2
integer ir3
integer ir4
integer ir5
integer ir6
integer ir7
integer ir8
integer ir9
integer ira
integer irb
integer irc
integer ird
integer ire
integer irf
integer irg
integer irh
integer iri
integer irj
integer irk
integer irl
integer irm
integer irn
integer iro
integer irp
integer irq
integer irr
integer irs
integer irt
integer iru
integer irv
integer irw
integer irx
integer iry
integer irz
integer is0
integer is1
integer is2
integer is3
integer is4
integer is5
integer is6
integer is7
integer is8
integer is9
integer isa
integer isb
integer isc
integer isd
integer ise
integer isf
integer isg
integer ish
integer isi
integer isj
integer isk
integer isl
integer ism
integer isn
integer iso
integer isp
integer isq
integer isr
integer iss
integer ist
integer isu
integer isv
integer isw
integer isx
integer isy
integer isz
integer it0
integer it1
integer it2
integer it3
integer it4
integer it5
integer it6
integer it7
integer it8
integer it9
integer ita
integer itb
integer itc
integer itd
integer ite
integer itf
integer itg
integer ith
integer iti
integer itj
integer itk
integer itl
integer itm
integer itn
integer ito
integer itp
integer itq
integer itr
integer its
integer itt
integer itu
integer itv
integer itw
integer itx
integer ity
integer itz
integer iua
integer iub
integer iuc
integer iud
integer iue
integer iuf
integer iug
integer iuh
integer iui
integer iuj
integer iuk
integer iul
integer ium
integer iun
integer iuo
integer iup
integer iuq
integer iur
integer ius
integer iut
logical modelend
C**********************************************
C executable statements of routine
C**********************************************
call autodiff_inadmode_unset( mythid )
myiter = niter0+iloop-1
mytime = starttime+float(iloop-1)*deltatclock
do iut = 1, nsy
do ius = 1, nsx
do iur = 1, nr
do iuq = 1-oly, sny+oly
do iup = 1-olx, snx+olx
comlev1_totphihyd_8h(iup,iuq,iur,ius,iut,ikey_dynamics)
$= totphihyd(iup,iuq,iur,ius,iut)
end do
end do
end do
end do
end do
do iuo = 1, nsy
do iun = 1, nsx
do ium = 1-oly, sny+oly
do iul = 1-olx, snx+olx
comlev1_pmepr_9h(iul,ium,iun,iuo,ikey_dynamics) = pmepr(
$iul,ium,iun,iuo)
end do
end do
end do
end do
do iuk = 1, nsy
do iuj = 1, nsx
do iui = 1, nr
do iuh = 1-oly, sny+oly
do iug = 1-olx, snx+olx
comlev1_uveld_10h(iug,iuh,iui,iuj,iuk,ikey_dynamics) =
$uveld(iug,iuh,iui,iuj,iuk)
end do
end do
end do
end do
end do
do iuf = 1, nsy
do iue = 1, nsx
do iud = 1, nr
do iuc = 1-oly, sny+oly
do iub = 1-olx, snx+olx
comlev1_vveld_11h(iub,iuc,iud,iue,iuf,ikey_dynamics) =
$vveld(iub,iuc,iud,iue,iuf)
end do
end do
end do
end do
end do
do iua = 1, nsy
do it9 = 1, nsx
do it8 = 1, nr
do it7 = 1-oly, sny+oly
do it6 = 1-olx, snx+olx
comlev1_unm1_12h(it6,it7,it8,it9,iua,ikey_dynamics) =
$unm1(it6,it7,it8,it9,iua)
end do
end do
end do
end do
end do
do it5 = 1, nsy
do it4 = 1, nsx
do it3 = 1, nr
do it2 = 1-oly, sny+oly
do it1 = 1-olx, snx+olx
comlev1_vnm1_13h(it1,it2,it3,it4,it5,ikey_dynamics) =
$vnm1(it1,it2,it3,it4,it5)
end do
end do
end do
end do
end do
do it0 = 1, nsy
do itz = 1, nsx
do ity = 1-oly, sny+oly
do itx = 1-olx, snx+olx
comlev1_taux0_14h(itx,ity,itz,it0,ikey_dynamics) = taux0(
$itx,ity,itz,it0)
end do
end do
end do
end do
do itw = 1, nsy
do itv = 1, nsx
do itu = 1-oly, sny+oly
do itt = 1-olx, snx+olx
comlev1_taux1_15h(itt,itu,itv,itw,ikey_dynamics) = taux1(
$itt,itu,itv,itw)
end do
end do
end do
end do
do its = 1, nsy
do itr = 1, nsx
do itq = 1-oly, sny+oly
do itp = 1-olx, snx+olx
comlev1_tauy0_16h(itp,itq,itr,its,ikey_dynamics) = tauy0(
$itp,itq,itr,its)
end do
end do
end do
end do
do ito = 1, nsy
do itn = 1, nsx
do itm = 1-oly, sny+oly
do itl = 1-olx, snx+olx
comlev1_tauy1_17h(itl,itm,itn,ito,ikey_dynamics) = tauy1(
$itl,itm,itn,ito)
end do
end do
end do
end do
do itk = 1, nsy
do itj = 1, nsx
do iti = 1-oly, sny+oly
do ith = 1-olx, snx+olx
comlev1_qnet0_18h(ith,iti,itj,itk,ikey_dynamics) = qnet0(
$ith,iti,itj,itk)
end do
end do
end do
end do
do itg = 1, nsy
do itf = 1, nsx
do ite = 1-oly, sny+oly
do itd = 1-olx, snx+olx
comlev1_qnet1_19h(itd,ite,itf,itg,ikey_dynamics) = qnet1(
$itd,ite,itf,itg)
end do
end do
end do
end do
do itc = 1, nsy
do itb = 1, nsx
do ita = 1-oly, sny+oly
do is9 = 1-olx, snx+olx
comlev1_empmr0_20h(is9,ita,itb,itc,ikey_dynamics) =
$empmr0(is9,ita,itb,itc)
end do
end do
end do
end do
do is8 = 1, nsy
do is7 = 1, nsx
do is6 = 1-oly, sny+oly
do is5 = 1-olx, snx+olx
comlev1_empmr1_21h(is5,is6,is7,is8,ikey_dynamics) =
$empmr1(is5,is6,is7,is8)
end do
end do
end do
end do
do is4 = 1, nsy
do is3 = 1, nsx
do is2 = 1-oly, sny+oly
do is1 = 1-olx, snx+olx
comlev1_sst0_22h(is1,is2,is3,is4,ikey_dynamics) = sst0(
$is1,is2,is3,is4)
end do
end do
end do
end do
do is0 = 1, nsy
do isz = 1, nsx
do isy = 1-oly, sny+oly
do isx = 1-olx, snx+olx
comlev1_sst1_23h(isx,isy,isz,is0,ikey_dynamics) = sst1(
$isx,isy,isz,is0)
end do
end do
end do
end do
do isw = 1, nsy
do isv = 1, nsx
do isu = 1-oly, sny+oly
do ist = 1-olx, snx+olx
comlev1_sss0_24h(ist,isu,isv,isw,ikey_dynamics) = sss0(
$ist,isu,isv,isw)
end do
end do
end do
end do
do iss = 1, nsy
do isr = 1, nsx
do isq = 1-oly, sny+oly
do isp = 1-olx, snx+olx
comlev1_sss1_25h(isp,isq,isr,iss,ikey_dynamics) = sss1(
$isp,isq,isr,iss)
end do
end do
end do
end do
do iso = 1, nsy
do isn = 1, nsx
do ism = 1-oly, sny+oly
do isl = 1-olx, snx+olx
comlev1_saltflux0_26h(isl,ism,isn,iso,ikey_dynamics) =
$saltflux0(isl,ism,isn,iso)
end do
end do
end do
end do
do isk = 1, nsy
do isj = 1, nsx
do isi = 1-oly, sny+oly
do ish = 1-olx, snx+olx
comlev1_saltflux1_27h(ish,isi,isj,isk,ikey_dynamics) =
$saltflux1(ish,isi,isj,isk)
end do
end do
end do
end do
do isg = 1, nsy
do isf = 1, nsx
do ise = 1, nr
do isd = 1-oly, sny+oly
do isc = 1-olx, snx+olx
comlev1_cmeanthetauvel_28h(isc,isd,ise,isf,isg,
$ikey_dynamics) = cmeanthetauvel(isc,isd,ise,isf,isg)
end do
end do
end do
end do
end do
do isb = 1, nsy
do isa = 1, nsx
do ir9 = 1, nr
do ir8 = 1-oly, sny+oly
do ir7 = 1-olx, snx+olx
comlev1_cmeanthetavvel_29h(ir7,ir8,ir9,isa,isb,
$ikey_dynamics) = cmeanthetavvel(ir7,ir8,ir9,isa,isb)
end do
end do
end do
end do
end do
do ir6 = 1, nsy
do ir5 = 1, nsx
do ir4 = 1, nr
do ir3 = 1-oly, sny+oly
do ir2 = 1-olx, snx+olx
comlev1_theta_30h(ir2,ir3,ir4,ir5,ir6,ikey_dynamics) =
$theta(ir2,ir3,ir4,ir5,ir6)
end do
end do
end do
end do
end do
do ir1 = 1, nsy
do ir0 = 1, nsx
do irz = 1, nr
do iry = 1-oly, sny+oly
do irx = 1-olx, snx+olx
comlev1_uvel_31h(irx,iry,irz,ir0,ir1,ikey_dynamics) =
$uvel(irx,iry,irz,ir0,ir1)
end do
end do
end do
end do
end do
do ir1 = 1, nsy
do ir0 = 1, nsx
do irz = 1, nr
do iry = 1-oly, sny+oly
do irx = 1-olx, snx+olx
comlev1_vvel_32h(irx,iry,irz,ir0,ir1,ikey_dynamics) =
$vvel(irx,iry,irz,ir0,ir1)
end do
end do
end do
end do
end do
call load_fields_driver( mytime,myiter,mythid )
if (myiter .eq. niter0) then
call ctrl_map_forcing( mythid )
endif
do irw = 1, nsy
do irv = 1, nsx
do iru = 1-oly, sny+oly
do irt = 1-olx, snx+olx
comlev1_surfaceforcingtice_33h(irt,iru,irv,irw,
$ikey_dynamics) = surfaceforcingtice(irt,iru,irv,irw)
end do
end do
end do
end do
call mddo_oceanic_phys( mytime,myiter,mythid )
do irs = 1, nsy
do irr = 1, nsx
do irq = 1-oly, sny+oly
do irp = 1-olx, snx+olx
comlev1_empmr_34h(irp,irq,irr,irs,ikey_dynamics) = empmr(
$irp,irq,irr,irs)
end do
end do
end do
end do
do iro = 1, nsy
do irn = 1, nsx
do irm = 1-oly, sny+oly
do irl = 1-olx, snx+olx
comlev1_pmepr_35h(irl,irm,irn,iro,ikey_dynamics) = pmepr(
$irl,irm,irn,iro)
end do
end do
end do
end do
do irk = 1, nsy
do irj = 1, nsx
do iri = 1, nr
do irh = 1-oly, sny+oly
do irg = 1-olx, snx+olx
comlev1_rhoinsitu_36h(irg,irh,iri,irj,irk,ikey_dynamics)
$ = rhoinsitu(irg,irh,iri,irj,irk)
end do
end do
end do
end do
end do
do irf = 1, nsy
do ire = 1, nsx
do ird = 1-oly, sny+oly
do irc = 1-olx, snx+olx
comlev1_surfaceforcings_37h(irc,ird,ire,irf,ikey_dynamics)
$ = surfaceforcings(irc,ird,ire,irf)
end do
end do
end do
end do
do irb = 1, nsy
do ira = 1, nsx
do iq9 = 1-oly, sny+oly
do iq8 = 1-olx, snx+olx
comlev1_surfaceforcingt_38h(iq8,iq9,ira,irb,ikey_dynamics)
$ = surfaceforcingt(iq8,iq9,ira,irb)
end do
end do
end do
end do
do iq7 = 1, nsy
do iq6 = 1, nsx
do iq5 = 1-oly, sny+oly
do iq4 = 1-olx, snx+olx
comlev1_surfaceforcingtice_39h(iq4,iq5,iq6,iq7,
$ikey_dynamics) = surfaceforcingtice(iq4,iq5,iq6,iq7)
end do
end do
end do
end do
do iq3 = 1, nsy
do iq2 = 1, nsx
do iq1 = 1, nr
do iq0 = 1-oly, sny+oly
do iqz = 1-olx, snx+olx
comlev1_ivdconvcount_40h(iqz,iq0,iq1,iq2,iq3,
$ikey_dynamics) = ivdconvcount(iqz,iq0,iq1,iq2,iq3)
end do
end do
end do
end do
end do
do iqy = 1, nsy
do iqx = 1, nsx
do iqw = 1, nr
do iqv = 1-oly, sny+oly
do iqu = 1-olx, snx+olx
comlev1_kwx_41h(iqu,iqv,iqw,iqx,iqy,ikey_dynamics) =
$kwx(iqu,iqv,iqw,iqx,iqy)
end do
end do
end do
end do
end do
do iqt = 1, nsy
do iqs = 1, nsx
do iqr = 1, nr
do iqq = 1-oly, sny+oly
do iqp = 1-olx, snx+olx
comlev1_kwy_42h(iqp,iqq,iqr,iqs,iqt,ikey_dynamics) =
$kwy(iqp,iqq,iqr,iqs,iqt)
end do
end do
end do
end do
end do
do iqo = 1, nsy
do iqn = 1, nsx
do iqm = 1, nr
do iql = 1-oly, sny+oly
do iqk = 1-olx, snx+olx
comlev1_kwz_43h(iqk,iql,iqm,iqn,iqo,ikey_dynamics) =
$kwz(iqk,iql,iqm,iqn,iqo)
end do
end do
end do
end do
end do
if ( .not. staggertimestep) then
do iqj = 1, nsy
do iqi = 1, nsx
do iqh = 1, nr
do iqg = 1-oly, sny+oly
do iqf = 1-olx, snx+olx
comlev1_salt_44h(iqf,iqg,iqh,iqi,iqj,ikey_dynamics) =
$salt(iqf,iqg,iqh,iqi,iqj)
end do
end do
end do
end do
end do
call mdthermodynamics( mytime,myiter,mythid )
endif
if (implicitintgravwave) then
call do_stagger_fields_exchanges( mytime,myiter,mythid )
endif
call mddynamics( mytime,myiter,mythid )
myiter = niter0+iloop
mytime = starttime+deltatclock*float(iloop)
if (momstepping) then
call solve_for_pressure( mytime,myiter,mythid )
endif
call momentum_correction_step( mytime,myiter,mythid )
if (exactconserv) then
call update_etah( mytime,myiter,mythid )
endif
if (staggertimestep) then
call do_stagger_fields_exchanges( mytime,myiter,mythid )
call mdthermodynamics( mytime,myiter,mythid )
endif
do iqe = 1, nsy
do iqd = 1, nsx
do iqc = 1, nr
do iqb = 1-oly, sny+oly
do iqa = 1-olx, snx+olx
comlev1_totphihyd_45h(iqa,iqb,iqc,iqd,iqe,ikey_dynamics)
$ = totphihyd(iqa,iqb,iqc,iqd,iqe)
end do
end do
end do
end do
end do
call mdtracers_correction_step( mytime,myiter,mythid )
call do_fields_blocking_exchanges( mythid )
call do_statevars_tave( mytime,myiter,mythid )
if ( .not. useoffline) then
call monitor( mytime,myiter,mythid )
endif
call mdcost_tile( mytime,myiter,mythid )
modelend = mytime .eq. endtime .or. myiter .eq. nenditer
if (usesigreg) then
modelend = modelend .or. i_got_signal .gt. 0
endif
call do_the_model_io( modelend,mytime,myiter,mythid )
call do_write_pickup( modelend,mytime,myiter,mythid )
call autodiff_inadmode_set( mythid )
end
subroutine adfreeze( bi, bj, imin, imax, jmin, jmax, k )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
double precision tfreezing
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
tfreezing = -1.9d0
do j = jmin, jmax
do i = imin, imax
if (gt(i,j,k,bi,bj) .lt. tfreezing) then
adgt(i,j,k,bi,bj) = 0.d0
endif
end do
end do
end
subroutine adfreeze_surface( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
integer i
integer j
integer k
double precision tfreezing
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usingpcoords) then
k = nr
else
k = 1
endif
tfreezing = -1.9d0
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (theta(i,j,k,bi,bj) .lt. tfreezing) then
adtheta(i,j,k,bi,bj) = 0.d0
adtheta(i,j,k,bi,bj) = adtheta(i,j,k,bi,bj)-
$adsurfaceforcingtice(i,j,bi,bj)*(drf(k)*hfacc(i,j,k,bi,bj)/
$dttracerlev(k))
adsurfaceforcingtice(i,j,bi,bj) = 0.d0
else
adsurfaceforcingtice(i,j,bi,bj) = 0.d0
endif
end do
end do
end do
end do
end
subroutine adgad_advection( implicitadvection, advectionscheme,
$vertadvecscheme, traceridentity, deltatlev, uvel, aduvel, vvel,
$advvel, wvel, adwvel, tracer, adtracer, adgtracer, bi, bj, mythid
$)
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer enum_dst2
parameter ( enum_dst2 = 20 )
integer enum_dst3
parameter ( enum_dst3 = 30 )
integer enum_dst3_flux_limit
parameter ( enum_dst3_flux_limit = 33 )
integer enum_flux_limit
parameter ( enum_flux_limit = 77 )
integer enum_upwind_1rst
parameter ( enum_upwind_1rst = 1 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer maxpass
parameter ( maxpass = 2 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_k_gad_pass_localti(1-olx:snx+olx,1-oly:sny+
$oly,7200)
common /cadlocaltij/ comlev1_bibj_k_gad_pass_localti
real*8 comlev1_bibj_k_gad_pass_localtj(1-olx:snx+olx,1-oly:sny+
$oly,7200)
common /cadlocaltik/ comlev1_bibj_k_gad_pass_localtj
real*8 comlev1_bibj_k_gad_rtrans_2h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadrtrant/ comlev1_bibj_k_gad_rtrans_2h
real*8 comlev1_bibj_k_gad_tracer_1h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadtracer/ comlev1_bibj_k_gad_tracer_1h
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
double precision adgtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer advectionscheme
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
double precision deltatlev(nr)
logical implicitadvection
integer mythid
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer vertadvecscheme
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision adaf(1-olx:snx+olx,1-oly:sny+oly)
double precision adfvert(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adlocaltij(1-olx:snx+olx,1-oly:sny+oly)
double precision adlocaltijk(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
double precision af(1-olx:snx+olx,1-oly:sny+oly)
logical calc_fluxes_x
logical calc_fluxes_y
logical e_edge
integer i
integer igadkey
integer imaxupd
integer iminupd
logical interioronly
integer ip1
integer ip2
integer ip3
integer ipass
integer j
integer jmaxupd
integer jminupd
integer k
integer kdown
integer kkey
double precision kp1msk
integer kup
double precision localtij(1-olx:snx+olx,1-oly:sny+oly)
double precision localtijk(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision masklocs(1-olx:snx+olx,1-oly:sny+oly)
double precision masklocw(1-olx:snx+olx,1-oly:sny+oly)
integer max0
integer max1
integer max2
integer max3
logical n_edge
integer ncface
integer npass
logical overlaponly
integer passkey
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
logical s_edge
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
logical w_edge
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
logical withsigns
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adaf(ip1,ip2) = 0.d0
end do
end do
do ip3 = 1, 2
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfvert(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adlocaltij(ip1,ip2) = 0.d0
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adlocaltijk(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrtrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrtranskp1(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adufld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adutrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advfld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advtrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adwfld(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
act0 = traceridentity
max0 = maxpass
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igadkey = act0+act1*max0+act2*max0*max1+act3*max0*max1*max2+act4*
$max0*max1*max2*max3
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localtij(i,j) = 0.d0
end do
end do
if (usecubedsphereexchange) then
npass = 3
ncface = bi
n_edge = .true.
s_edge = .true.
e_edge = .true.
w_edge = .true.
else
npass = 2
ncface = 0
n_edge = .false.
s_edge = .false.
e_edge = .false.
w_edge = .false.
endif
do k = 1, nr
call calc_common_factors( uvel,vvel,ufld,vfld,utrans,vtrans,xa,
$ya,k,bi,bj,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localtij(i,j) = tracer(i,j,k,bi,bj)
masklocw(i,j) = maskw(i,j,k,bi,bj)
masklocs(i,j) = masks(i,j,k,bi,bj)
end do
end do
if (usecubedsphereexchange) then
withsigns = .false.
call fill_cs_corner_uv_rs( withsigns,masklocw,masklocs,bi,bj,
$mythid )
endif
do ipass = 1, npass
interioronly = .false.
overlaponly = .false.
if (usecubedsphereexchange) then
if (ipass .eq. 1) then
overlaponly = mod(ncface,3) .eq. 0
interioronly = mod(ncface,3) .ne. 0
calc_fluxes_x = ncface .eq. 6 .or. ncface .eq. 1 .or.
$ncface .eq. 2
calc_fluxes_y = ncface .eq. 3 .or. ncface .eq. 4 .or.
$ncface .eq. 5
else if (ipass .eq. 2) then
overlaponly = mod(ncface,3) .eq. 2
interioronly = mod(ncface,3) .eq. 1
calc_fluxes_x = ncface .eq. 2 .or. ncface .eq. 3 .or.
$ncface .eq. 4
calc_fluxes_y = ncface .eq. 5 .or. ncface .eq. 6 .or.
$ncface .eq. 1
else
interioronly = .true.
calc_fluxes_x = ncface .eq. 5 .or. ncface .eq. 6
calc_fluxes_y = ncface .eq. 2 .or. ncface .eq. 3
endif
else
calc_fluxes_x = mod(ipass,2) .eq. 1
calc_fluxes_y = .not. calc_fluxes_x
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
af(i,j) = 0.
end do
end do
if (calc_fluxes_x) then
if (( .not. overlaponly) .or. n_edge .or. s_edge) then
if (overlaponly) then
call fill_cs_corner_tr_rl( 1, .false. ,localtij,bi,bj,
$mythid )
endif
if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call gad_dst2u1_adv_x( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),utrans,ufld,localtij,af,mythid )
else if (advectionscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,ufld,masklocw,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3) then
call gad_dst3_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,ufld,masklocw,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
call gad_dst3fl_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,ufld,masklocw,localtij,af,mythid )
endif
if (overlaponly .and. ipass .eq. 1) then
call fill_cs_corner_tr_rl( 2, .false. ,localtij,bi,bj,
$mythid )
endif
endif
if (overlaponly) then
iminupd = 1-olx+1
imaxupd = snx+olx-1
if (w_edge) then
iminupd = 1
endif
if (e_edge) then
imaxupd = snx
endif
if (s_edge) then
do j = 1-oly, 0
do i = iminupd, imaxupd
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i+1,j)-af(i,j)-tracer(i,j,k,bi,bj)
$*(utrans(i+1,j)-utrans(i,j)))
end do
end do
endif
if (n_edge) then
do j = sny+1, sny+oly
do i = iminupd, imaxupd
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i+1,j)-af(i,j)-tracer(i,j,k,bi,bj)
$*(utrans(i+1,j)-utrans(i,j)))
end do
end do
endif
else
jminupd = 1-oly
jmaxupd = sny+oly
if (interioronly .and. s_edge) then
jminupd = 1
endif
if (interioronly .and. n_edge) then
jmaxupd = sny
endif
do j = jminupd, jmaxupd
do i = 1-olx+1, snx+olx-1
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i+1,j)-af(i,j)-tracer(i,j,k,bi,bj)
$*(utrans(i+1,j)-utrans(i,j)))
end do
end do
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
af(i,j) = 0.
end do
end do
if (calc_fluxes_y) then
if (( .not. overlaponly) .or. e_edge .or. w_edge) then
if (overlaponly) then
call fill_cs_corner_tr_rl( 2, .false. ,localtij,bi,bj,
$mythid )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
af(i,j) = 0.
end do
end do
if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call gad_dst2u1_adv_y( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),vtrans,vfld,localtij,af,mythid )
else if (advectionscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,vfld,masklocs,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3) then
call gad_dst3_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,vfld,masklocs,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
call gad_dst3fl_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,vfld,masklocs,localtij,af,mythid )
endif
if (overlaponly .and. ipass .eq. 1) then
call fill_cs_corner_tr_rl( 1, .false. ,localtij,bi,bj,
$mythid )
endif
endif
if (overlaponly) then
jminupd = 1-oly+1
jmaxupd = sny+oly-1
if (s_edge) then
jminupd = 1
endif
if (n_edge) then
jmaxupd = sny
endif
if (w_edge) then
do j = jminupd, jmaxupd
do i = 1-olx, 0
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i,j+1)-af(i,j)-tracer(i,j,k,bi,bj)
$*(vtrans(i,j+1)-vtrans(i,j)))
end do
end do
endif
if (e_edge) then
do j = jminupd, jmaxupd
do i = snx+1, snx+olx
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i,j+1)-af(i,j)-tracer(i,j,k,bi,bj)
$*(vtrans(i,j+1)-vtrans(i,j)))
end do
end do
endif
else
iminupd = 1-olx
imaxupd = snx+olx
if (interioronly .and. w_edge) then
iminupd = 1
endif
if (interioronly .and. e_edge) then
imaxupd = snx
endif
do j = 1-oly+1, sny+oly-1
do i = iminupd, imaxupd
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i,j+1)-af(i,j)-tracer(i,j,k,bi,bj)
$*(vtrans(i,j+1)-vtrans(i,j)))
end do
end do
endif
endif
end do
if (implicitadvection) then
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localtijk(i,j,k) = localtij(i,j)
end do
end do
endif
end do
if ( .not. implicitadvection) then
do k = 1, nr
kkey = (igadkey-1)*nr+nr-k+1
kup = 1+mod(k+1,2)
kdown = 1+mod(k,2)
kp1msk = 1.
if (k .eq. nr) then
kp1msk = 0.
endif
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
rtrans(ip1,ip2) = comlev1_bibj_k_gad_rtrans_2h(ip1,ip2,
$kkey)
end do
end do
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtranskp1(i,j) = kp1msk*rtrans(i,j)
rtrans(i,j) = 0.
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtranskp1(i,j) = kp1msk*rtrans(i,j)
rtrans(i,j) = wvel(i,j,k,bi,bj)*ra(i,j,bi,bj)*deepfac2f(
$k)*rhofacf(k)*maskc(i,j,k-1,bi,bj)
end do
end do
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adlocaltij(i,j) = adlocaltij(i,j)+adgtracer(i,j,k,bi,bj)/
$deltatlev(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)-adgtracer(i,
$j,k,bi,bj)/deltatlev(k)
adgtracer(i,j,k,bi,bj) = 0.d0
adfvert(i,j,kdown) = adfvert(i,j,kdown)-adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*rksign
adfvert(i,j,kup) = adfvert(i,j,kup)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*rksign
adlocaltijk(i,j,k) = adlocaltijk(i,j,k)+adlocaltij(i,j)
adrtrans(i,j) = adrtrans(i,j)-adlocaltij(i,j)*deltatlev(k)
$*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(
$i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)*rksign
adrtranskp1(i,j) = adrtranskp1(i,j)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)*
$rksign
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+adlocaltij(
$i,j)*deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*
$recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*(rtranskp1(i,
$j)-rtrans(i,j))*rksign
adlocaltij(i,j) = 0.d0
end do
end do
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adfvert(i,j,kup) = 0.d0
adrtrans(i,j) = 0.d0
adwfld(i,j) = 0.d0
adrtrans(i,j) = adrtrans(i,j)+adrtranskp1(i,j)*kp1msk
adrtranskp1(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
wfld(i,j) = wvel(i,j,k,bi,bj)
end do
end do
if (vertadvecscheme .eq. enum_upwind_1rst .or.
$vertadvecscheme .eq. enum_dst2) then
call adgad_dst2u1_adv_r( bi,bj,k,advectionscheme,
$deltatlev(k),rtrans,adrtrans,wfld,adwfld,localtijk,adlocaltijk,
$adfvert(1-olx,1-oly,kup) )
else if (vertadvecscheme .eq. enum_flux_limit) then
call adgad_fluxlimit_adv_r( bi,bj,k,deltatlev(k),rtrans,
$adrtrans,wfld,adwfld,localtijk,adlocaltijk,adfvert(1-olx,1-oly,
$kup) )
else if (vertadvecscheme .eq. enum_dst3) then
call adgad_dst3_adv_r( bi,bj,k,deltatlev(k),rtrans,
$adrtrans,wfld,adwfld,localtijk,adlocaltijk,adfvert(1-olx,1-oly,
$kup) )
else if (vertadvecscheme .eq. enum_dst3_flux_limit) then
call adgad_dst3fl_adv_r( bi,bj,k,deltatlev(k),rtrans,
$adrtrans,wfld,adwfld,localtijk,adlocaltijk,adfvert(1-olx,1-oly,
$kup) )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adfvert(i,j,kup) = 0.d0
adwvel(i,j,k,bi,bj) = adwvel(i,j,k,bi,bj)+adrtrans(i,j)*
$ra(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)*maskc(i,j,k-1,bi,bj)
adrtrans(i,j) = 0.d0
adwvel(i,j,k,bi,bj) = adwvel(i,j,k,bi,bj)+adwfld(i,j)
adwfld(i,j) = 0.d0
adrtrans(i,j) = adrtrans(i,j)+adrtranskp1(i,j)*kp1msk
adrtranskp1(i,j) = 0.d0
end do
end do
endif
end do
endif
do k = nr, 1, -1
kkey = (igadkey-1)*nr+k
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
tracer(ip1,ip2,k,bi,bj) = comlev1_bibj_k_gad_tracer_1h(ip1,
$ip2,kkey)
end do
end do
call calc_common_factors( uvel,vvel,ufld,vfld,utrans,vtrans,xa,
$ya,k,bi,bj,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
masklocw(i,j) = maskw(i,j,k,bi,bj)
masklocs(i,j) = masks(i,j,k,bi,bj)
end do
end do
if (usecubedsphereexchange) then
withsigns = .false.
call fill_cs_corner_uv_rs( withsigns,masklocw,masklocs,bi,bj,
$mythid )
endif
if (implicitadvection) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adlocaltij(i,j) = adlocaltij(i,j)+adgtracer(i,j,k,bi,bj)/
$deltatlev(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)-adgtracer(i,
$j,k,bi,bj)/deltatlev(k)
adgtracer(i,j,k,bi,bj) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adlocaltij(i,j) = adlocaltij(i,j)+adlocaltijk(i,j,k)
adlocaltijk(i,j,k) = 0.d0
end do
end do
endif
do ipass = npass, 1, -1
passkey = ipass+(k-1)*maxpass+(igadkey-1)*maxpass*nr
interioronly = .false.
overlaponly = .false.
if (usecubedsphereexchange) then
if (ipass .eq. 1) then
overlaponly = mod(ncface,3) .eq. 0
interioronly = mod(ncface,3) .ne. 0
calc_fluxes_x = ncface .eq. 6 .or. ncface .eq. 1 .or.
$ncface .eq. 2
calc_fluxes_y = ncface .eq. 3 .or. ncface .eq. 4 .or.
$ncface .eq. 5
else if (ipass .eq. 2) then
overlaponly = mod(ncface,3) .eq. 2
interioronly = mod(ncface,3) .eq. 1
calc_fluxes_x = ncface .eq. 2 .or. ncface .eq. 3 .or.
$ncface .eq. 4
calc_fluxes_y = ncface .eq. 5 .or. ncface .eq. 6 .or.
$ncface .eq. 1
else
interioronly = .true.
calc_fluxes_x = ncface .eq. 5 .or. ncface .eq. 6
calc_fluxes_y = ncface .eq. 2 .or. ncface .eq. 3
endif
else
calc_fluxes_x = mod(ipass,2) .eq. 1
calc_fluxes_y = .not. calc_fluxes_x
endif
if (calc_fluxes_y) then
if (overlaponly) then
jminupd = 1-oly+1
jmaxupd = sny+oly-1
if (s_edge) then
jminupd = 1
endif
if (n_edge) then
jmaxupd = sny
endif
if (e_edge) then
do j = jminupd, jmaxupd
do i = snx+1, snx+olx
adaf(i,j+1) = adaf(i,j+1)-adlocaltij(i,j)*deltatlev(
$k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*
$recip_ra(i,j,bi,bj)*recip_deepfac2c(k)
adaf(i,j) = adaf(i,j)+adlocaltij(i,j)*deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+
$adlocaltij(i,j)*deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,
$bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*(
$vtrans(i,j+1)-vtrans(i,j))
advtrans(i,j+1) = advtrans(i,j+1)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
advtrans(i,j) = advtrans(i,j)-adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
end do
end do
endif
if (w_edge) then
do j = jminupd, jmaxupd
do i = 1-olx, 0
adaf(i,j+1) = adaf(i,j+1)-adlocaltij(i,j)*deltatlev(
$k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*
$recip_ra(i,j,bi,bj)*recip_deepfac2c(k)
adaf(i,j) = adaf(i,j)+adlocaltij(i,j)*deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+
$adlocaltij(i,j)*deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,
$bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*(
$vtrans(i,j+1)-vtrans(i,j))
advtrans(i,j+1) = advtrans(i,j+1)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
advtrans(i,j) = advtrans(i,j)-adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
end do
end do
endif
else
iminupd = 1-olx
imaxupd = snx+olx
if (interioronly .and. w_edge) then
iminupd = 1
endif
if (interioronly .and. e_edge) then
imaxupd = snx
endif
do j = 1-oly+1, sny+oly-1
do i = iminupd, imaxupd
adaf(i,j+1) = adaf(i,j+1)-adlocaltij(i,j)*deltatlev(k)
$*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(
$i,j,bi,bj)*recip_deepfac2c(k)
adaf(i,j) = adaf(i,j)+adlocaltij(i,j)*deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+
$adlocaltij(i,j)*deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,
$bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*(
$vtrans(i,j+1)-vtrans(i,j))
advtrans(i,j+1) = advtrans(i,j+1)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
advtrans(i,j) = advtrans(i,j)-adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
end do
end do
endif
if (( .not. overlaponly) .or. e_edge .or. w_edge) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
localtij(ip1,ip2) = comlev1_bibj_k_gad_pass_localti(
$ip1,ip2,passkey)
end do
end do
if (overlaponly .and. ipass .eq. 1) then
call adfill_cs_corner_tr_rl( 1, .false. ,adlocaltij )
endif
if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call adgad_dst2u1_adv_y( bi,bj,k,advectionscheme,
$.true. ,deltatlev(k),vtrans,advtrans,vfld,advfld,localtij,
$adlocaltij,adaf )
else if (advectionscheme .eq. enum_flux_limit) then
call adgad_fluxlimit_adv_y( bi,bj,k, .true. ,deltatlev(
$k),vtrans,advtrans,vfld,advfld,masklocs,localtij,adlocaltij,adaf )
else if (advectionscheme .eq. enum_dst3) then
call adgad_dst3_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,advtrans,vfld,advfld,masklocs,localtij,adlocaltij,adaf )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
call adgad_dst3fl_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,advtrans,vfld,advfld,masklocs,localtij,adlocaltij,adaf )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adaf(i,j) = 0.d0
end do
end do
if (overlaponly) then
call adfill_cs_corner_tr_rl( 2, .false. ,adlocaltij )
endif
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adaf(i,j) = 0.d0
end do
end do
if (calc_fluxes_x) then
if (overlaponly) then
iminupd = 1-olx+1
imaxupd = snx+olx-1
if (w_edge) then
iminupd = 1
endif
if (e_edge) then
imaxupd = snx
endif
if (n_edge) then
do j = sny+1, sny+oly
do i = iminupd, imaxupd
adaf(i+1,j) = adaf(i+1,j)-adlocaltij(i,j)*deltatlev(
$k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*
$recip_ra(i,j,bi,bj)*recip_deepfac2c(k)
adaf(i,j) = adaf(i,j)+adlocaltij(i,j)*deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+
$adlocaltij(i,j)*deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,
$bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*(
$utrans(i+1,j)-utrans(i,j))
adutrans(i+1,j) = adutrans(i+1,j)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
adutrans(i,j) = adutrans(i,j)-adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
end do
end do
endif
if (s_edge) then
do j = 1-oly, 0
do i = iminupd, imaxupd
adaf(i+1,j) = adaf(i+1,j)-adlocaltij(i,j)*deltatlev(
$k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*
$recip_ra(i,j,bi,bj)*recip_deepfac2c(k)
adaf(i,j) = adaf(i,j)+adlocaltij(i,j)*deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+
$adlocaltij(i,j)*deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,
$bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*(
$utrans(i+1,j)-utrans(i,j))
adutrans(i+1,j) = adutrans(i+1,j)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
adutrans(i,j) = adutrans(i,j)-adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
end do
end do
endif
else
jminupd = 1-oly
jmaxupd = sny+oly
if (interioronly .and. s_edge) then
jminupd = 1
endif
if (interioronly .and. n_edge) then
jmaxupd = sny
endif
do j = jminupd, jmaxupd
do i = 1-olx+1, snx+olx-1
adaf(i+1,j) = adaf(i+1,j)-adlocaltij(i,j)*deltatlev(k)
$*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(
$i,j,bi,bj)*recip_deepfac2c(k)
adaf(i,j) = adaf(i,j)+adlocaltij(i,j)*deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+
$adlocaltij(i,j)*deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,
$bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*(
$utrans(i+1,j)-utrans(i,j))
adutrans(i+1,j) = adutrans(i+1,j)+adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
adutrans(i,j) = adutrans(i,j)-adlocaltij(i,j)*
$deltatlev(k)*recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(
$k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*tracer(i,j,k,bi,bj)
end do
end do
endif
if (( .not. overlaponly) .or. n_edge .or. s_edge) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
localtij(ip1,ip2) = comlev1_bibj_k_gad_pass_localtj(
$ip1,ip2,passkey)
end do
end do
if (overlaponly .and. ipass .eq. 1) then
call adfill_cs_corner_tr_rl( 2, .false. ,adlocaltij )
endif
if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call adgad_dst2u1_adv_x( bi,bj,k,advectionscheme,
$.true. ,deltatlev(k),utrans,adutrans,ufld,adufld,localtij,
$adlocaltij,adaf )
else if (advectionscheme .eq. enum_flux_limit) then
call adgad_fluxlimit_adv_x( bi,bj,k, .true. ,deltatlev(
$k),utrans,adutrans,ufld,adufld,masklocw,localtij,adlocaltij,adaf )
else if (advectionscheme .eq. enum_dst3) then
call adgad_dst3_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,adutrans,ufld,adufld,masklocw,localtij,adlocaltij,adaf )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
call adgad_dst3fl_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,adutrans,ufld,adufld,masklocw,localtij,adlocaltij,adaf )
endif
if (overlaponly) then
call adfill_cs_corner_tr_rl( 1, .false. ,adlocaltij )
endif
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adaf(i,j) = 0.d0
end do
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+adlocaltij(i,
$j)
adlocaltij(i,j) = 0.d0
end do
end do
call adcalc_common_factors( aduvel,advvel,adufld,advfld,
$adutrans,advtrans,k,bi,bj )
end do
end
subroutine mdgad_advection( implicitadvection, advectionscheme,
$vertadvecscheme, traceridentity, deltatlev, uvel, vvel, wvel,
$tracer, gtracer, bi, bj, mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer enum_dst2
parameter ( enum_dst2 = 20 )
integer enum_dst3
parameter ( enum_dst3 = 30 )
integer enum_dst3_flux_limit
parameter ( enum_dst3_flux_limit = 33 )
integer enum_flux_limit
parameter ( enum_flux_limit = 77 )
integer enum_upwind_1rst
parameter ( enum_upwind_1rst = 1 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer maxpass
parameter ( maxpass = 2 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_k_gad_pass_af_5h(1-olx:snx+olx,1-oly:sny+oly,
$7200)
common /cadaf/ comlev1_bibj_k_gad_pass_af_5h
real*8 comlev1_bibj_k_gad_pass_af_2h(1-olx:snx+olx,1-oly:sny+oly,
$7200)
common /cadag/ comlev1_bibj_k_gad_pass_af_2h
real*8 comlev1_bibj_k_gad_fvert_3h(1-olx:snx+olx,1-oly:sny+oly,2,
$3600)
common /cadfvert/ comlev1_bibj_k_gad_fvert_3h
real*8 comlev1_bibj_k_gad_pass_localti(1-olx:snx+olx,1-oly:sny+
$oly,7200)
common /cadlocaltij/ comlev1_bibj_k_gad_pass_localti
real*8 comlev1_bibj_k_gad_pass_localtk(1-olx:snx+olx,1-oly:sny+
$oly,7200)
common /cadlocaltik/ comlev1_bibj_k_gad_pass_localtk
real*8 comlev1_bibj_k_gad_pass_localtj(1-olx:snx+olx,1-oly:sny+
$oly,7200)
common /cadlocaltil/ comlev1_bibj_k_gad_pass_localtj
real*8 comlev1_bibj_k_gad_pass_localtl(1-olx:snx+olx,1-oly:sny+
$oly,7200)
common /cadlocaltim/ comlev1_bibj_k_gad_pass_localtl
real*8 comlev1_bibj_k_gad_rtrans_2h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadrtrant/ comlev1_bibj_k_gad_rtrans_2h
real*8 comlev1_bibj_k_gad_tracer_1h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadtracer/ comlev1_bibj_k_gad_tracer_1h
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer advectionscheme
integer bi
integer bj
double precision deltatlev(nr)
double precision gtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
logical implicitadvection
integer myiter
integer mythid
double precision mytime
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer vertadvecscheme
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision af(1-olx:snx+olx,1-oly:sny+oly)
logical calc_fluxes_x
logical calc_fluxes_y
logical e_edge
double precision fvert(1-olx:snx+olx,1-oly:sny+oly,2)
integer i
integer igadkey
integer imaxupd
integer iminupd
logical interioronly
integer ipass
integer iqf
integer iqg
integer iqh
integer iqi
integer iqj
integer irm
integer irn
integer iro
integer irp
integer irq
integer irr
integer irs
integer irt
integer iru
integer irv
integer irw
integer irx
integer iry
integer irz
integer j
integer jmaxupd
integer jminupd
integer k
integer kdown
integer kkey
double precision kp1msk
integer kup
double precision localtij(1-olx:snx+olx,1-oly:sny+oly)
double precision localtijk(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision masklocs(1-olx:snx+olx,1-oly:sny+oly)
double precision masklocw(1-olx:snx+olx,1-oly:sny+oly)
integer max0
integer max1
integer max2
integer max3
logical n_edge
integer ncface
integer npass
logical overlaponly
integer passkey
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
logical s_edge
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
logical w_edge
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
logical withsigns
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C**********************************************
C executable statements of routine
C**********************************************
act0 = traceridentity
max0 = maxpass
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igadkey = act0+act1*max0+act2*max0*max1+act3*max0*max1*max2+act4*
$max0*max1*max2*max3
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtrans(i,j) = 0.d0
fvert(i,j,1) = 0.d0
fvert(i,j,2) = 0.d0
rtranskp1(i,j) = 0.d0
localtij(i,j) = 0.d0
wfld(i,j) = 0.d0
end do
end do
if (usecubedsphereexchange) then
npass = 3
ncface = bi
n_edge = .true.
s_edge = .true.
e_edge = .true.
w_edge = .true.
else
npass = 2
ncface = 0
n_edge = .false.
s_edge = .false.
e_edge = .false.
w_edge = .false.
endif
do k = 1, nr
kkey = (igadkey-1)*nr+k
do irz = 1-oly, sny+oly
do iry = 1-olx, snx+olx
comlev1_bibj_k_gad_tracer_1h(iry,irz,kkey) = tracer(iry,irz,
$k,bi,bj)
end do
end do
call calc_common_factors( uvel,vvel,ufld,vfld,utrans,vtrans,xa,
$ya,k,bi,bj,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localtij(i,j) = tracer(i,j,k,bi,bj)
masklocw(i,j) = maskw(i,j,k,bi,bj)
masklocs(i,j) = masks(i,j,k,bi,bj)
end do
end do
if (usecubedsphereexchange) then
withsigns = .false.
call fill_cs_corner_uv_rs( withsigns,masklocw,masklocs,bi,bj,
$mythid )
endif
do ipass = 1, npass
passkey = ipass+(k-1)*maxpass+(igadkey-1)*maxpass*nr
interioronly = .false.
overlaponly = .false.
if (usecubedsphereexchange) then
if (ipass .eq. 1) then
overlaponly = mod(ncface,3) .eq. 0
interioronly = mod(ncface,3) .ne. 0
calc_fluxes_x = ncface .eq. 6 .or. ncface .eq. 1 .or.
$ncface .eq. 2
calc_fluxes_y = ncface .eq. 3 .or. ncface .eq. 4 .or.
$ncface .eq. 5
else if (ipass .eq. 2) then
overlaponly = mod(ncface,3) .eq. 2
interioronly = mod(ncface,3) .eq. 1
calc_fluxes_x = ncface .eq. 2 .or. ncface .eq. 3 .or.
$ncface .eq. 4
calc_fluxes_y = ncface .eq. 5 .or. ncface .eq. 6 .or.
$ncface .eq. 1
else
interioronly = .true.
calc_fluxes_x = ncface .eq. 5 .or. ncface .eq. 6
calc_fluxes_y = ncface .eq. 2 .or. ncface .eq. 3
endif
else
calc_fluxes_x = mod(ipass,2) .eq. 1
calc_fluxes_y = .not. calc_fluxes_x
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
af(i,j) = 0.
end do
end do
do irx = 1-oly, sny+oly
do irw = 1-olx, snx+olx
comlev1_bibj_k_gad_pass_localtl(irw,irx,passkey) =
$localtij(irw,irx)
end do
end do
do irv = 1-oly, sny+oly
do iru = 1-olx, snx+olx
comlev1_bibj_k_gad_pass_af_2h(iru,irv,passkey) = af(iru,
$irv)
end do
end do
if (calc_fluxes_x) then
if (( .not. overlaponly) .or. n_edge .or. s_edge) then
if (overlaponly) then
call fill_cs_corner_tr_rl( 1, .false. ,localtij,bi,bj,
$mythid )
endif
do irt = 1-oly, sny+oly
do irs = 1-olx, snx+olx
comlev1_bibj_k_gad_pass_localtk(irs,irt,passkey) =
$localtij(irs,irt)
end do
end do
if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call gad_dst2u1_adv_x( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),utrans,ufld,localtij,af,mythid )
else if (advectionscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,ufld,masklocw,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3) then
call gad_dst3_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,ufld,masklocw,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
call gad_dst3fl_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,ufld,masklocw,localtij,af,mythid )
endif
if (overlaponly .and. ipass .eq. 1) then
call fill_cs_corner_tr_rl( 2, .false. ,localtij,bi,bj,
$mythid )
endif
endif
if (overlaponly) then
iminupd = 1-olx+1
imaxupd = snx+olx-1
if (w_edge) then
iminupd = 1
endif
if (e_edge) then
imaxupd = snx
endif
if (s_edge) then
do j = 1-oly, 0
do i = iminupd, imaxupd
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i+1,j)-af(i,j)-tracer(i,j,k,bi,bj)
$*(utrans(i+1,j)-utrans(i,j)))
end do
end do
endif
if (n_edge) then
do j = sny+1, sny+oly
do i = iminupd, imaxupd
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i+1,j)-af(i,j)-tracer(i,j,k,bi,bj)
$*(utrans(i+1,j)-utrans(i,j)))
end do
end do
endif
else
jminupd = 1-oly
jmaxupd = sny+oly
if (interioronly .and. s_edge) then
jminupd = 1
endif
if (interioronly .and. n_edge) then
jmaxupd = sny
endif
do j = jminupd, jmaxupd
do i = 1-olx+1, snx+olx-1
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i+1,j)-af(i,j)-tracer(i,j,k,bi,bj)
$*(utrans(i+1,j)-utrans(i,j)))
end do
end do
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
af(i,j) = 0.
end do
end do
do irr = 1-oly, sny+oly
do irq = 1-olx, snx+olx
comlev1_bibj_k_gad_pass_localtj(irq,irr,passkey) =
$localtij(irq,irr)
end do
end do
do irp = 1-oly, sny+oly
do iro = 1-olx, snx+olx
comlev1_bibj_k_gad_pass_af_5h(iro,irp,passkey) = af(iro,
$irp)
end do
end do
if (calc_fluxes_y) then
if (( .not. overlaponly) .or. e_edge .or. w_edge) then
if (overlaponly) then
call fill_cs_corner_tr_rl( 2, .false. ,localtij,bi,bj,
$mythid )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
af(i,j) = 0.
end do
end do
do irn = 1-oly, sny+oly
do irm = 1-olx, snx+olx
comlev1_bibj_k_gad_pass_localti(irm,irn,passkey) =
$localtij(irm,irn)
end do
end do
if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call gad_dst2u1_adv_y( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),vtrans,vfld,localtij,af,mythid )
else if (advectionscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,vfld,masklocs,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3) then
call gad_dst3_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,vfld,masklocs,localtij,af,mythid )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
call gad_dst3fl_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,vfld,masklocs,localtij,af,mythid )
endif
if (overlaponly .and. ipass .eq. 1) then
call fill_cs_corner_tr_rl( 1, .false. ,localtij,bi,bj,
$mythid )
endif
endif
if (overlaponly) then
jminupd = 1-oly+1
jmaxupd = sny+oly-1
if (s_edge) then
jminupd = 1
endif
if (n_edge) then
jmaxupd = sny
endif
if (w_edge) then
do j = jminupd, jmaxupd
do i = 1-olx, 0
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i,j+1)-af(i,j)-tracer(i,j,k,bi,bj)
$*(vtrans(i,j+1)-vtrans(i,j)))
end do
end do
endif
if (e_edge) then
do j = jminupd, jmaxupd
do i = snx+1, snx+olx
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i,j+1)-af(i,j)-tracer(i,j,k,bi,bj)
$*(vtrans(i,j+1)-vtrans(i,j)))
end do
end do
endif
else
iminupd = 1-olx
imaxupd = snx+olx
if (interioronly .and. w_edge) then
iminupd = 1
endif
if (interioronly .and. e_edge) then
imaxupd = snx
endif
do j = 1-oly+1, sny+oly-1
do i = iminupd, imaxupd
localtij(i,j) = localtij(i,j)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(af(i,j+1)-af(i,j)-tracer(i,j,k,bi,bj)
$*(vtrans(i,j+1)-vtrans(i,j)))
end do
end do
endif
endif
end do
if (implicitadvection) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
gtracer(i,j,k,bi,bj) = (localtij(i,j)-tracer(i,j,k,bi,bj))
$/deltatlev(k)
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localtijk(i,j,k) = localtij(i,j)
end do
end do
endif
end do
if ( .not. implicitadvection) then
do k = nr, 1, -1
kkey = (igadkey-1)*nr+nr-k+1
kup = 1+mod(k+1,2)
kdown = 1+mod(k,2)
kp1msk = 1.
if (k .eq. nr) then
kp1msk = 0.
endif
do iqj = 1-oly, sny+oly
do iqi = 1-olx, snx+olx
comlev1_bibj_k_gad_rtrans_2h(iqi,iqj,kkey) = rtrans(iqi,
$iqj)
end do
end do
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtranskp1(i,j) = kp1msk*rtrans(i,j)
wfld(i,j) = 0.
rtrans(i,j) = 0.
fvert(i,j,kup) = 0.
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtranskp1(i,j) = kp1msk*rtrans(i,j)
wfld(i,j) = wvel(i,j,k,bi,bj)
rtrans(i,j) = wvel(i,j,k,bi,bj)*ra(i,j,bi,bj)*deepfac2f(
$k)*rhofacf(k)*maskc(i,j,k-1,bi,bj)
fvert(i,j,kup) = 0.
end do
end do
if (vertadvecscheme .eq. enum_upwind_1rst .or.
$vertadvecscheme .eq. enum_dst2) then
call gad_dst2u1_adv_r( bi,bj,k,advectionscheme,deltatlev(
$k),rtrans,wfld,localtijk,fvert(1-olx,1-oly,kup),mythid )
else if (vertadvecscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_r( bi,bj,k,deltatlev(k),rtrans,
$wfld,localtijk,fvert(1-olx,1-oly,kup),mythid )
else if (vertadvecscheme .eq. enum_dst3) then
call gad_dst3_adv_r( bi,bj,k,deltatlev(k),rtrans,wfld,
$localtijk,fvert(1-olx,1-oly,kup),mythid )
else if (vertadvecscheme .eq. enum_dst3_flux_limit) then
call gad_dst3fl_adv_r( bi,bj,k,deltatlev(k),rtrans,wfld,
$localtijk,fvert(1-olx,1-oly,kup),mythid )
endif
endif
do iqh = 1, 2
do iqg = 1-oly, sny+oly
do iqf = 1-olx, snx+olx
comlev1_bibj_k_gad_fvert_3h(iqf,iqg,iqh,kkey) = fvert(
$iqf,iqg,iqh)
end do
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localtij(i,j) = localtijk(i,j,k)-deltatlev(k)*
$recip_rhofacc(k)*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,
$j,bi,bj)*recip_deepfac2c(k)*(fvert(i,j,kdown)-fvert(i,j,kup)-
$tracer(i,j,k,bi,bj)*(rtranskp1(i,j)-rtrans(i,j)))*rksign
gtracer(i,j,k,bi,bj) = (localtij(i,j)-tracer(i,j,k,bi,bj))
$/deltatlev(k)
end do
end do
end do
endif
end
subroutine adgad_biharm_x( bi, bj, k, xa, addel2t, diffk4, addfx )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2t(1-olx:snx+olx,1-oly:sny+oly)
double precision addfx(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision diffk4
integer k
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx+1, snx+olx
addel2t(i-1,j) = addel2t(i-1,j)-addfx(i,j)*diffk4*xa(i,j)*
$recip_dxc(i,j,bi,bj)*recip_deepfacc(k)*sqcosfacu(j,bi,bj)
addel2t(i,j) = addel2t(i,j)+addfx(i,j)*diffk4*xa(i,j)*
$recip_dxc(i,j,bi,bj)*recip_deepfacc(k)*sqcosfacu(j,bi,bj)
end do
end do
end
subroutine adgad_biharm_y( bi, bj, k, ya, addel2t, diffk4, addfy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2t(1-olx:snx+olx,1-oly:sny+oly)
double precision addfy(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision diffk4
integer k
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
addel2t(i,j-1) = addel2t(i,j-1)-addfy(i,j)*diffk4*ya(i,j)*
$recip_dyc(i,j,bi,bj)*recip_deepfacc(k)
addel2t(i,j) = addel2t(i,j)+addfy(i,j)*diffk4*ya(i,j)*
$recip_dyc(i,j,bi,bj)*recip_deepfacc(k)
end do
end do
end
subroutine adgad_c2_adv_r( bi, bj, k, rtrans, adrtrans, tracer,
$adtracer, adwt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer km1
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
km1 = max(1,k-1)
if (k .eq. 1 .or. k .gt. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adwt(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrtrans(i,j) = adrtrans(i,j)+0.5d0*adwt(i,j)*maskc(i,j,km1,
$bi,bj)*(tracer(i,j,k,bi,bj)+tracer(i,j,km1,bi,bj))
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+0.5d0*adwt(i,
$j)*maskc(i,j,km1,bi,bj)*rtrans(i,j)
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+0.5d0*
$adwt(i,j)*maskc(i,j,km1,bi,bj)*rtrans(i,j)
adwt(i,j) = 0.d0
end do
end do
endif
end
subroutine adgad_c2_adv_x( utrans, adutrans, tracer, adtracer,
$adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx+1, snx+olx
adtracer(i-1,j) = adtracer(i-1,j)+0.5d0*adut(i,j)*utrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*adut(i,j)*utrans(i,j)
adutrans(i,j) = adutrans(i,j)+0.5d0*adut(i,j)*(tracer(i,j)+
$tracer(i-1,j))
adut(i,j) = 0.d0
end do
end do
end
subroutine adgad_c2_adv_y( vtrans, advtrans, tracer, adtracer,
$advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
adtracer(i,j-1) = adtracer(i,j-1)+0.5d0*advt(i,j)*vtrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*advt(i,j)*vtrans(i,j)
advtrans(i,j) = advtrans(i,j)+0.5d0*advt(i,j)*(tracer(i,j)+
$tracer(i,j-1))
advt(i,j) = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,1-oly) = 0.d0
end do
end
subroutine adgad_c4_adv_r( bi, bj, k, rtrans, adrtrans, tracer,
$adtracer, adwt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
double precision adrj
double precision adrjjm
double precision adrjjp
double precision adrjm
double precision adrjp
double precision adwth
integer i
integer j
integer km1
integer km2
integer kp1
double precision maskbound
double precision maskpm
double precision rj
double precision rjjm
double precision rjjp
double precision rjm
double precision rjp
double precision wth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
km2 = max(1,k-2)
km1 = max(1,k-1)
kp1 = min(nr,k+1)
maskpm = 1.
if (k .le. 2 .or. k .ge. nr) then
maskpm = 0.
endif
if (k .eq. 1 .or. k .gt. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adwt(i,j) = 0.d0
end do
end do
else
do j = sny+oly, 1-oly, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
do i = snx+olx, 1-olx, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
maskbound = maskpm*maskc(i,j,km2,bi,bj)*maskc(i,j,kp1,bi,bj)
rjp = (tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))*maskc(i,j,
$kp1,bi,bj)
rj = tracer(i,j,k,bi,bj)-tracer(i,j,km1,bi,bj)
rjm = (tracer(i,j,km1,bi,bj)-tracer(i,j,km2,bi,bj))*maskc(i,
$j,km1,bi,bj)
rjjp = rjp-rj
rjjm = rj-rjm
wth = abs(rtrans(i,j))
adrjjm = adrjjm+adwt(i,j)*maskc(i,j,km1,bi,bj)*((-(0.5d0*
$rtrans(i,j)*onesixth))+0.5d0*wth*onesixth*(1.d0-maskbound))
adrjjp = adrjjp+adwt(i,j)*maskc(i,j,km1,bi,bj)*((-(0.5d0*
$rtrans(i,j)*onesixth))-0.5d0*wth*onesixth*(1.d0-maskbound))
adrtrans(i,j) = adrtrans(i,j)+adwt(i,j)*maskc(i,j,km1,bi,bj)
$*(0.5d0*(tracer(i,j,k,bi,bj)+tracer(i,j,km1,bi,bj))-0.5d0*
$onesixth*(rjjm+rjjp))
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+0.5d0*adwt(i,
$j)*maskc(i,j,km1,bi,bj)*rtrans(i,j)
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+0.5d0*
$adwt(i,j)*maskc(i,j,km1,bi,bj)*rtrans(i,j)
adwth = 0.5d0*adwt(i,j)*maskc(i,j,km1,bi,bj)*onesixth*(rjjm-
$rjjp)*(1.d0-maskbound)
adrtrans(i,j) = adrtrans(i,j)+adwth*sign(1.d0,rtrans(i,j))
adwt(i,j) = 0.d0
adrj = adrj+adrjjm
adrjm = adrjm-adrjjm
adrjjm = 0.d0
adrj = adrj-adrjjp
adrjp = adrjp+adrjjp
adrjjp = 0.d0
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+adrjm*
$maskc(i,j,km1,bi,bj)
adtracer(i,j,km2,bi,bj) = adtracer(i,j,km2,bi,bj)-adrjm*
$maskc(i,j,km1,bi,bj)
adrjm = 0.d0
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+adrj
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)-adrj
adrj = 0.d0
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)-adrjp*maskc(i,
$j,kp1,bi,bj)
adtracer(i,j,kp1,bi,bj) = adtracer(i,j,kp1,bi,bj)+adrjp*
$maskc(i,j,kp1,bi,bj)
adrjp = 0.d0
end do
end do
endif
end
subroutine adgad_c4_adv_x( bi, bj, k, utrans, adutrans, tracer,
$adtracer, adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adrj
double precision adrjjm
double precision adrjjp
double precision adrjm
double precision adrjp
double precision aduth
integer i
integer j
double precision rj
double precision rjjm
double precision rjjp
double precision rjm
double precision rjp
double precision uth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly, 1-oly, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
do i = snx+olx-1, 1-olx+2, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
rjp = (tracer(i+1,j)-tracer(i,j))*maskw(i+1,j,k,bi,bj)
rj = (tracer(i,j)-tracer(i-1,j))*maskw(i,j,k,bi,bj)
rjm = (tracer(i-1,j)-tracer(i-2,j))*maskw(i-1,j,k,bi,bj)
rjjp = rjp-rj
rjjm = rj-rjm
uth = abs(utrans(i,j))
adrjjm = adrjjm+adut(i,j)*((-(0.5d0*utrans(i,j)*onesixth))-
$0.5d0*uth*onesixth*(1.d0-maskw(i-1,j,k,bi,bj)*maskw(i+1,j,k,bi,bj)
$))
adrjjp = adrjjp+adut(i,j)*((-(0.5d0*utrans(i,j)*onesixth))+
$0.5d0*uth*onesixth*(1.d0-maskw(i-1,j,k,bi,bj)*maskw(i+1,j,k,bi,bj)
$))
adtracer(i-1,j) = adtracer(i-1,j)+0.5d0*adut(i,j)*utrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*adut(i,j)*utrans(i,j)
aduth = 0.5d0*adut(i,j)*onesixth*(rjjp-rjjm)*(1.d0-maskw(i-1,
$j,k,bi,bj)*maskw(i+1,j,k,bi,bj))
adutrans(i,j) = adutrans(i,j)+0.5d0*adut(i,j)*(tracer(i,j)+
$tracer(i-1,j)-onesixth*(rjjp+rjjm))
adutrans(i,j) = adutrans(i,j)+aduth*sign(1.d0,utrans(i,j))
adut(i,j) = 0.d0
adrj = adrj+adrjjm
adrjm = adrjm-adrjjm
adrjjm = 0.d0
adrj = adrj-adrjjp
adrjp = adrjp+adrjjp
adrjjp = 0.d0
adtracer(i-2,j) = adtracer(i-2,j)-adrjm*maskw(i-1,j,k,bi,bj)
adtracer(i-1,j) = adtracer(i-1,j)+adrjm*maskw(i-1,j,k,bi,bj)
adrjm = 0.d0
adtracer(i-1,j) = adtracer(i-1,j)-adrj*maskw(i,j,k,bi,bj)
adtracer(i,j) = adtracer(i,j)+adrj*maskw(i,j,k,bi,bj)
adrj = 0.d0
adtracer(i+1,j) = adtracer(i+1,j)+adrjp*maskw(i+1,j,k,bi,bj)
adtracer(i,j) = adtracer(i,j)-adrjp*maskw(i+1,j,k,bi,bj)
adrjp = 0.d0
end do
end do
end
subroutine adgad_c4_adv_y( bi, bj, k, vtrans, advtrans, tracer,
$adtracer, advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adrj
double precision adrjjm
double precision adrjjp
double precision adrjm
double precision adrjp
double precision advth
integer i
integer j
double precision rj
double precision rjjm
double precision rjjp
double precision rjm
double precision rjp
double precision vth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly-1, 1-oly+2, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
do i = snx+olx, 1-olx, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
rjp = (tracer(i,j+1)-tracer(i,j))*masks(i,j+1,k,bi,bj)
rj = (tracer(i,j)-tracer(i,j-1))*masks(i,j,k,bi,bj)
rjm = (tracer(i,j-1)-tracer(i,j-2))*masks(i,j-1,k,bi,bj)
rjjp = rjp-rj
rjjm = rj-rjm
vth = abs(vtrans(i,j))
adrjjm = adrjjm+advt(i,j)*((-(0.5d0*vtrans(i,j)*onesixth))-
$0.5d0*vth*onesixth*(1.d0-masks(i,j-1,k,bi,bj)*masks(i,j+1,k,bi,bj)
$))
adrjjp = adrjjp+advt(i,j)*((-(0.5d0*vtrans(i,j)*onesixth))+
$0.5d0*vth*onesixth*(1.d0-masks(i,j-1,k,bi,bj)*masks(i,j+1,k,bi,bj)
$))
adtracer(i,j-1) = adtracer(i,j-1)+0.5d0*advt(i,j)*vtrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*advt(i,j)*vtrans(i,j)
advth = 0.5d0*advt(i,j)*onesixth*(rjjp-rjjm)*(1.d0-masks(i,j-
$1,k,bi,bj)*masks(i,j+1,k,bi,bj))
advtrans(i,j) = advtrans(i,j)+0.5d0*advt(i,j)*(tracer(i,j)+
$tracer(i,j-1)-onesixth*(rjjp+rjjm))
advtrans(i,j) = advtrans(i,j)+advth*sign(1.d0,vtrans(i,j))
advt(i,j) = 0.d0
adrj = adrj+adrjjm
adrjm = adrjm-adrjjm
adrjjm = 0.d0
adrj = adrj-adrjjp
adrjp = adrjp+adrjjp
adrjjp = 0.d0
adtracer(i,j-2) = adtracer(i,j-2)-adrjm*masks(i,j-1,k,bi,bj)
adtracer(i,j-1) = adtracer(i,j-1)+adrjm*masks(i,j-1,k,bi,bj)
adrjm = 0.d0
adtracer(i,j-1) = adtracer(i,j-1)-adrj*masks(i,j,k,bi,bj)
adtracer(i,j) = adtracer(i,j)+adrj*masks(i,j,k,bi,bj)
adrj = 0.d0
adtracer(i,j+1) = adtracer(i,j+1)+adrjp*masks(i,j+1,k,bi,bj)
adtracer(i,j) = adtracer(i,j)-adrjp*masks(i,j+1,k,bi,bj)
adrjp = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,sny+oly) = 0.d0
advt(i,2-oly) = 0.d0
advt(i,1-oly) = 0.d0
end do
end
subroutine adgad_calc_rhs( bi, bj, imin, imax, jmin, jmax, k, kup,
$ kdown, xa, ya, maskup, ufld, adufld, vfld, advfld, wfld, adwfld,
$utrans, adutrans, vtrans, advtrans, rtrans, adrtrans, rtranskp1,
$adrtranskp1, diffkh, diffk4, kappar, adkappar, tracern, adtracern,
$ tracab, adtracab, deltatlev, traceridentity, advectionscheme,
$vertadvecscheme, calcadvection, implicitadvection,
$applyab_ontracer, trusegmredi, adfvert, adgtracer, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer enum_centered_2nd
parameter ( enum_centered_2nd = 2 )
integer enum_centered_4th
parameter ( enum_centered_4th = 4 )
integer enum_dst2
parameter ( enum_dst2 = 20 )
integer enum_dst3
parameter ( enum_dst3 = 30 )
integer enum_dst3_flux_limit
parameter ( enum_dst3_flux_limit = 33 )
integer enum_flux_limit
parameter ( enum_flux_limit = 77 )
integer enum_os7mp
parameter ( enum_os7mp = 7 )
integer enum_upwind_1rst
parameter ( enum_upwind_1rst = 1 )
integer enum_upwind_3rd
parameter ( enum_upwind_3rd = 3 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adfvert(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adgtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkappar(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracab(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtracern(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer advectionscheme
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
logical applyab_ontracer
integer bi
integer bj
logical calcadvection
double precision deltatlev(nr)
double precision diffk4
double precision diffkh
integer imax
integer imin
logical implicitadvection
integer jmax
integer jmin
integer k
double precision kappar(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer mythid
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision tracab(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision tracern(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
logical trusegmredi
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
integer vertadvecscheme
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adaf(1-olx:snx+olx,1-oly:sny+oly)
double precision addf(1-olx:snx+olx,1-oly:sny+oly)
double precision addf4(1-olx:snx+olx,1-oly:sny+oly)
double precision adfmer(1-olx:snx+olx,1-oly:sny+oly)
double precision adfzon(1-olx:snx+olx,1-oly:sny+oly)
double precision adlocabt(1-olx:snx+olx,1-oly:sny+oly)
double precision adlocalt(1-olx:snx+olx,1-oly:sny+oly)
double precision advfac
double precision fmer(1-olx:snx+olx,1-oly:sny+oly)
double precision fzon(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
double precision locabt(1-olx:snx+olx,1-oly:sny+oly)
double precision localt(1-olx:snx+olx,1-oly:sny+oly)
double precision radvfac
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adaf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addf4(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfmer(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfzon(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adlocabt(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adlocalt(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
advfac = 0.d0
if (calcadvection) then
advfac = 1.d0
endif
radvfac = rksign*advfac
if (implicitadvection) then
radvfac = 0.d0
endif
if (applyab_ontracer) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localt(i,j) = tracern(i,j,k,bi,bj)
locabt(i,j) = tracab(i,j,k,bi,bj)
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localt(i,j) = tracab(i,j,k,bi,bj)
locabt(i,j) = tracab(i,j,k,bi,bj)
end do
end do
endif
if (diffk4 .ne. 0.) then
call gad_grad_x( bi,bj,k,xa,localt,fzon,mythid )
call gad_grad_y( bi,bj,k,ya,localt,fmer,mythid )
endif
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adfmer(i,j+1) = adfmer(i,j+1)-adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)
adfmer(i,j) = adfmer(i,j)+adgtracer(i,j,k,bi,bj)*recip_hfacc(
$i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)
adfvert(i,j,kdown) = adfvert(i,j,kdown)-adgtracer(i,j,k,bi,bj)
$*recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*rksign
adfvert(i,j,kup) = adfvert(i,j,kup)+adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*rksign
adfzon(i+1,j) = adfzon(i+1,j)-adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)
adfzon(i,j) = adfzon(i,j)+adgtracer(i,j,k,bi,bj)*recip_hfacc(
$i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)
adlocalt(i,j) = adlocalt(i,j)+adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*(utrans(i+1,j)-utrans(i,j)+
$vtrans(i,j+1)-vtrans(i,j)+(rtranskp1(i,j)-rtrans(i,j))*radvfac)*
$advfac
adrtrans(i,j) = adrtrans(i,j)-adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*localt(i,j)*radvfac*advfac
adrtranskp1(i,j) = adrtranskp1(i,j)+adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*localt(i,j)*radvfac*advfac
adutrans(i+1,j) = adutrans(i+1,j)+adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*localt(i,j)*advfac
adutrans(i,j) = adutrans(i,j)-adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*localt(i,j)*advfac
advtrans(i,j+1) = advtrans(i,j+1)+adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*localt(i,j)*advfac
advtrans(i,j) = advtrans(i,j)-adgtracer(i,j,k,bi,bj)*
$recip_hfacc(i,j,k,bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*localt(i,j)*advfac
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
addf(i,j) = addf(i,j)+adfvert(i,j,kup)*maskup(i,j)
end do
end do
if (trusegmredi) then
if (applyab_ontracer) then
call adgmredi_rtransport( imin,imax,jmin,jmax,bi,bj,k,tracern,
$adtracern,traceridentity,addf )
else
call adgmredi_rtransport( imin,imax,jmin,jmax,bi,bj,k,tracab,
$adtracab,traceridentity,addf )
endif
endif
if (implicitdiffusion) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
addf(i,j) = 0.d0
end do
end do
else
if (applyab_ontracer) then
call adgad_diff_r( bi,bj,k,kappar,adkappar,tracern,adtracern,
$addf )
else
call adgad_diff_r( bi,bj,k,kappar,adkappar,tracab,adtracab,
$addf )
endif
endif
if (calcadvection .and. ( .not. implicitadvection) .and. k .ge. 2)
$ then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adaf(i,j) = adaf(i,j)+adfvert(i,j,kup)
end do
end do
if (vertadvecscheme .eq. enum_centered_2nd) then
call adgad_c2_adv_r( bi,bj,k,rtrans,adrtrans,tracab,adtracab,
$adaf )
else if (vertadvecscheme .eq. enum_upwind_1rst .or.
$vertadvecscheme .eq. enum_dst2) then
call adgad_dst2u1_adv_r( bi,bj,k,vertadvecscheme,deltatlev(k),
$rtrans,adrtrans,wfld,adwfld,tracab(1-olx,1-oly,1,bi,bj),adtracab(
$1-olx,1-oly,1,bi,bj),adaf )
else if (vertadvecscheme .eq. enum_flux_limit) then
call adgad_fluxlimit_adv_r( bi,bj,k,deltatlev(k),rtrans,
$adrtrans,wfld,adwfld,tracab(1-olx,1-oly,1,bi,bj),adtracab(1-olx,1-
$oly,1,bi,bj),adaf )
else if (vertadvecscheme .eq. enum_upwind_3rd) then
call adgad_u3_adv_r( bi,bj,k,rtrans,adrtrans,tracab,adtracab,
$adaf )
else if (vertadvecscheme .eq. enum_centered_4th) then
call adgad_c4_adv_r( bi,bj,k,rtrans,adrtrans,tracab,adtracab,
$adaf )
else if (vertadvecscheme .eq. enum_dst3) then
call adgad_dst3_adv_r( bi,bj,k,deltatlev(k),rtrans,adrtrans,
$wfld,adwfld,tracab(1-olx,1-oly,1,bi,bj),adtracab(1-olx,1-oly,1,bi,
$bj),adaf )
else if (vertadvecscheme .eq. enum_dst3_flux_limit) then
if (inadmode) then
call adgad_dst3_adv_r( bi,bj,k,deltatlev(k),rtrans,adrtrans,
$wfld,adwfld,tracab(1-olx,1-oly,1,bi,bj),adtracab(1-olx,1-oly,1,bi,
$bj),adaf )
else
call adgad_dst3fl_adv_r( bi,bj,k,deltatlev(k),rtrans,
$adrtrans,wfld,adwfld,tracab(1-olx,1-oly,1,bi,bj),adtracab(1-olx,1-
$oly,1,bi,bj),adaf )
endif
else if (vertadvecscheme .eq. enum_os7mp) then
call adgad_os7mp_adv_r( bi,bj,k,deltatlev(k),rtrans,adrtrans,
$wfld,adwfld,tracab(1-olx,1-oly,1,bi,bj),adtracab(1-olx,1-oly,1,bi,
$bj),adaf )
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
addf(i,j) = addf(i,j)+adfmer(i,j)*rhofacc(k)
end do
end do
if (trusegmredi) then
if (applyab_ontracer) then
call adgmredi_ytransport( imin,imax,jmin,jmax,bi,bj,k,ya,
$tracern,adtracern,traceridentity,addf,mythid )
else
call adgmredi_ytransport( imin,imax,jmin,jmax,bi,bj,k,ya,
$tracab,adtracab,traceridentity,addf,mythid )
endif
endif
if (diffk4 .ne. 0.) then
call adgad_biharm_y( bi,bj,k,ya,addf4,diffk4,addf )
endif
if (diffkh .ne. 0.) then
call adgad_diff_y( bi,bj,k,ya,diffkh,adlocalt,addf )
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
addf(i,j) = 0.d0
end do
end do
endif
if (calcadvection) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adaf(i,j) = adaf(i,j)+adfmer(i,j)
end do
end do
if (advectionscheme .eq. enum_centered_2nd) then
call adgad_c2_adv_y( vtrans,advtrans,locabt,adlocabt,adaf )
else if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call adgad_dst2u1_adv_y( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),vtrans,advtrans,vfld,advfld,locabt,adlocabt,adaf )
else if (advectionscheme .eq. enum_flux_limit) then
call adgad_fluxlimit_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,advtrans,vfld,advfld,masks(1-olx,1-oly,k,bi,bj),locabt,
$adlocabt,adaf )
else if (advectionscheme .eq. enum_upwind_3rd) then
call adgad_u3_adv_y( bi,bj,k,vtrans,advtrans,locabt,adlocabt,
$adaf )
else if (advectionscheme .eq. enum_centered_4th) then
call adgad_c4_adv_y( bi,bj,k,vtrans,advtrans,locabt,adlocabt,
$adaf )
else if (advectionscheme .eq. enum_dst3) then
call adgad_dst3_adv_y( bi,bj,k, .true. ,deltatlev(k),vtrans,
$advtrans,vfld,advfld,masks(1-olx,1-oly,k,bi,bj),locabt,adlocabt,
$adaf )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
if (inadmode) then
call adgad_dst3_adv_y( bi,bj,k, .true. ,deltatlev(k),vtrans,
$advtrans,vfld,advfld,masks(1-olx,1-oly,k,bi,bj),locabt,adlocabt,
$adaf )
else
call adgad_dst3fl_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,advtrans,vfld,advfld,masks(1-olx,1-oly,k,bi,bj),locabt,
$adlocabt,adaf )
endif
else if (advectionscheme .eq. enum_os7mp) then
call adgad_os7mp_adv_y( bi,bj, .true. ,deltatlev(k),vtrans,
$advtrans,vfld,advfld,masks(1-olx,1-oly,k,bi,bj),locabt,adlocabt,
$adaf )
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adfmer(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
addf(i,j) = addf(i,j)+adfzon(i,j)*rhofacc(k)
end do
end do
if (trusegmredi) then
if (applyab_ontracer) then
call adgmredi_xtransport( imin,imax,jmin,jmax,bi,bj,k,xa,
$tracern,adtracern,traceridentity,addf,mythid )
else
call adgmredi_xtransport( imin,imax,jmin,jmax,bi,bj,k,xa,
$tracab,adtracab,traceridentity,addf,mythid )
endif
endif
if (diffk4 .ne. 0.) then
call adgad_biharm_x( bi,bj,k,xa,addf4,diffk4,addf )
endif
if (diffkh .ne. 0.) then
call adgad_diff_x( bi,bj,k,xa,diffkh,adlocalt,addf )
endif
if (calcadvection) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adaf(i,j) = adaf(i,j)+adfzon(i,j)
end do
end do
if (advectionscheme .eq. enum_centered_2nd) then
call adgad_c2_adv_x( utrans,adutrans,locabt,adlocabt,adaf )
else if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call adgad_dst2u1_adv_x( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),utrans,adutrans,ufld,adufld,locabt,adlocabt,adaf )
else if (advectionscheme .eq. enum_flux_limit) then
call adgad_fluxlimit_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,adutrans,ufld,adufld,maskw(1-olx,1-oly,k,bi,bj),locabt,
$adlocabt,adaf )
else if (advectionscheme .eq. enum_upwind_3rd) then
call adgad_u3_adv_x( bi,bj,k,utrans,adutrans,locabt,adlocabt,
$adaf )
else if (advectionscheme .eq. enum_centered_4th) then
call adgad_c4_adv_x( bi,bj,k,utrans,adutrans,locabt,adlocabt,
$adaf )
else if (advectionscheme .eq. enum_dst3) then
call adgad_dst3_adv_x( bi,bj,k, .true. ,deltatlev(k),utrans,
$adutrans,ufld,adufld,maskw(1-olx,1-oly,k,bi,bj),locabt,adlocabt,
$adaf )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
if (inadmode) then
call adgad_dst3_adv_x( bi,bj,k, .true. ,deltatlev(k),utrans,
$adutrans,ufld,adufld,maskw(1-olx,1-oly,k,bi,bj),locabt,adlocabt,
$adaf )
else
call adgad_dst3fl_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,adutrans,ufld,adufld,maskw(1-olx,1-oly,k,bi,bj),locabt,
$adlocabt,adaf )
endif
else if (advectionscheme .eq. enum_os7mp) then
call adgad_os7mp_adv_x( bi,bj, .true. ,deltatlev(k),utrans,
$adutrans,ufld,adufld,maskw(1-olx,1-oly,k,bi,bj),locabt,adlocabt,
$adaf )
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adfzon(i,j) = 0.d0
end do
end do
if (diffk4 .ne. 0.) then
call adgad_del2( bi,bj,k,adfzon,adfmer,addf4 )
call adgad_grad_y( bi,bj,k,ya,adlocalt,adfmer )
call adgad_grad_x( bi,bj,k,xa,adlocalt,adfzon )
endif
if (applyab_ontracer) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adtracab(i,j,k,bi,bj) = adtracab(i,j,k,bi,bj)+adlocabt(i,j)
adlocabt(i,j) = 0.d0
adtracern(i,j,k,bi,bj) = adtracern(i,j,k,bi,bj)+adlocalt(i,
$j)
adlocalt(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adtracab(i,j,k,bi,bj) = adtracab(i,j,k,bi,bj)+adlocabt(i,j)
adlocabt(i,j) = 0.d0
adtracab(i,j,k,bi,bj) = adtracab(i,j,k,bi,bj)+adlocalt(i,j)
adlocalt(i,j) = 0.d0
end do
end do
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adfvert(i,j,kup) = 0.d0
end do
end do
end
subroutine mdgad_calc_rhs( bi, bj, imin, imax, jmin, jmax, k, km1,
$ kup, kdown, xa, ya, maskup, ufld, vfld, wfld, utrans, vtrans,
$rtrans, rtranskp1, diffkh, diffk4, kappar, tracern, tracab,
$deltatlev, traceridentity, advectionscheme, vertadvecscheme,
$calcadvection, implicitadvection, applyab_ontracer, trusegmredi,
$trusekpp, fvert, gtracer, mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer enum_centered_2nd
parameter ( enum_centered_2nd = 2 )
integer enum_centered_4th
parameter ( enum_centered_4th = 4 )
integer enum_dst2
parameter ( enum_dst2 = 20 )
integer enum_dst3
parameter ( enum_dst3 = 30 )
integer enum_dst3_flux_limit
parameter ( enum_dst3_flux_limit = 33 )
integer enum_flux_limit
parameter ( enum_flux_limit = 77 )
integer enum_os7mp
parameter ( enum_os7mp = 7 )
integer enum_upwind_1rst
parameter ( enum_upwind_1rst = 1 )
integer enum_upwind_3rd
parameter ( enum_upwind_3rd = 3 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer advectionscheme
logical applyab_ontracer
integer bi
integer bj
logical calcadvection
double precision deltatlev(nr)
double precision diffk4
double precision diffkh
double precision fvert(1-olx:snx+olx,1-oly:sny+oly,2)
double precision gtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer imax
integer imin
logical implicitadvection
integer jmax
integer jmin
integer k
double precision kappar(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer km1
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer myiter
integer mythid
double precision mytime
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision tracab(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision tracern(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
logical trusegmredi
logical trusekpp
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
integer vertadvecscheme
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision advfac
double precision af(1-olx:snx+olx,1-oly:sny+oly)
double precision df(1-olx:snx+olx,1-oly:sny+oly)
double precision df4(1-olx:snx+olx,1-oly:sny+oly)
double precision fmer(1-olx:snx+olx,1-oly:sny+oly)
double precision fzon(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer j
double precision locabt(1-olx:snx+olx,1-oly:sny+oly)
double precision localt(1-olx:snx+olx,1-oly:sny+oly)
double precision radvfac
C**********************************************
C executable statements of routine
C**********************************************
fvert(1,1,kdown) = fvert(1,1,kdown)
advfac = 0.d0
if (calcadvection) then
advfac = 1.d0
endif
radvfac = rksign*advfac
if (implicitadvection) then
radvfac = 0.d0
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fzon(i,j) = 0.d0
fmer(i,j) = 0.d0
fvert(i,j,kup) = 0.d0
df(i,j) = 0.d0
df4(i,j) = 0.d0
end do
end do
if (applyab_ontracer) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localt(i,j) = tracern(i,j,k,bi,bj)
locabt(i,j) = tracab(i,j,k,bi,bj)
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
localt(i,j) = tracab(i,j,k,bi,bj)
locabt(i,j) = tracab(i,j,k,bi,bj)
end do
end do
endif
if (diffk4 .ne. 0.) then
call gad_grad_x( bi,bj,k,xa,localt,fzon,mythid )
call gad_grad_y( bi,bj,k,ya,localt,fmer,mythid )
call gad_del2( bi,bj,k,fzon,fmer,df4,mythid )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fzon(i,j) = 0.d0
end do
end do
if (calcadvection) then
if (advectionscheme .eq. enum_centered_2nd) then
call gad_c2_adv_x( bi,bj,k,utrans,locabt,af,mythid )
else if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call gad_dst2u1_adv_x( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),utrans,ufld,locabt,af,mythid )
else if (advectionscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_x( bi,bj,k, .true. ,deltatlev(k),
$utrans,ufld,maskw(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
else if (advectionscheme .eq. enum_upwind_3rd) then
call gad_u3_adv_x( bi,bj,k,utrans,locabt,af,mythid )
else if (advectionscheme .eq. enum_centered_4th) then
call gad_c4_adv_x( bi,bj,k,utrans,locabt,af,mythid )
else if (advectionscheme .eq. enum_dst3) then
call gad_dst3_adv_x( bi,bj,k, .true. ,deltatlev(k),utrans,
$ufld,maskw(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
if (inadmode) then
call gad_dst3_adv_x( bi,bj,k, .true. ,deltatlev(k),utrans,
$ufld,maskw(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
else
call gad_dst3fl_adv_x( bi,bj,k, .true. ,deltatlev(k),utrans,
$ufld,maskw(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
endif
else if (advectionscheme .eq. enum_os7mp) then
call gad_os7mp_adv_x( bi,bj,k, .true. ,deltatlev(k),utrans,
$ufld,maskw(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fzon(i,j) = fzon(i,j)+af(i,j)
end do
end do
endif
if (diffkh .ne. 0.) then
call gad_diff_x( bi,bj,k,xa,diffkh,localt,df,mythid )
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
df(i,j) = 0.d0
end do
end do
endif
if (diffk4 .ne. 0.) then
call gad_biharm_x( bi,bj,k,xa,df4,diffk4,df,mythid )
endif
if (trusegmredi) then
if (applyab_ontracer) then
call mdgmredi_xtransport( imin,imax,jmin,jmax,bi,bj,k,xa,
$tracern,traceridentity,df,mythid )
else
call mdgmredi_xtransport( imin,imax,jmin,jmax,bi,bj,k,xa,
$tracab,traceridentity,df,mythid )
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fzon(i,j) = fzon(i,j)+df(i,j)*rhofacc(k)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fmer(i,j) = 0.d0
end do
end do
if (calcadvection) then
if (advectionscheme .eq. enum_centered_2nd) then
call gad_c2_adv_y( bi,bj,k,vtrans,locabt,af,mythid )
else if (advectionscheme .eq. enum_upwind_1rst .or.
$advectionscheme .eq. enum_dst2) then
call gad_dst2u1_adv_y( bi,bj,k,advectionscheme, .true. ,
$deltatlev(k),vtrans,vfld,locabt,af,mythid )
else if (advectionscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_y( bi,bj,k, .true. ,deltatlev(k),
$vtrans,vfld,masks(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
else if (advectionscheme .eq. enum_upwind_3rd) then
call gad_u3_adv_y( bi,bj,k,vtrans,locabt,af,mythid )
else if (advectionscheme .eq. enum_centered_4th) then
call gad_c4_adv_y( bi,bj,k,vtrans,locabt,af,mythid )
else if (advectionscheme .eq. enum_dst3) then
call gad_dst3_adv_y( bi,bj,k, .true. ,deltatlev(k),vtrans,
$vfld,masks(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
else if (advectionscheme .eq. enum_dst3_flux_limit) then
if (inadmode) then
call gad_dst3_adv_y( bi,bj,k, .true. ,deltatlev(k),vtrans,
$vfld,masks(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
else
call gad_dst3fl_adv_y( bi,bj,k, .true. ,deltatlev(k),vtrans,
$vfld,masks(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
endif
else if (advectionscheme .eq. enum_os7mp) then
call gad_os7mp_adv_y( bi,bj,k, .true. ,deltatlev(k),vtrans,
$vfld,masks(1-olx,1-oly,k,bi,bj),locabt,af,mythid )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fmer(i,j) = fmer(i,j)+af(i,j)
end do
end do
endif
if (diffkh .ne. 0.) then
call gad_diff_y( bi,bj,k,ya,diffkh,localt,df,mythid )
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
df(i,j) = 0.d0
end do
end do
endif
if (diffk4 .ne. 0.) then
call gad_biharm_y( bi,bj,k,ya,df4,diffk4,df,mythid )
endif
if (trusegmredi) then
if (applyab_ontracer) then
call mdgmredi_ytransport( imin,imax,jmin,jmax,bi,bj,k,ya,
$tracern,traceridentity,df,mythid )
else
call mdgmredi_ytransport( imin,imax,jmin,jmax,bi,bj,k,ya,
$tracab,traceridentity,df,mythid )
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fmer(i,j) = fmer(i,j)+df(i,j)*rhofacc(k)
end do
end do
if (calcadvection .and. ( .not. implicitadvection) .and. k .ge. 2)
$ then
if (vertadvecscheme .eq. enum_centered_2nd) then
call gad_c2_adv_r( bi,bj,k,rtrans,tracab,af,mythid )
else if (vertadvecscheme .eq. enum_upwind_1rst .or.
$vertadvecscheme .eq. enum_dst2) then
call gad_dst2u1_adv_r( bi,bj,k,vertadvecscheme,deltatlev(k),
$rtrans,wfld,tracab(1-olx,1-oly,1,bi,bj),af,mythid )
else if (vertadvecscheme .eq. enum_flux_limit) then
call gad_fluxlimit_adv_r( bi,bj,k,deltatlev(k),rtrans,wfld,
$tracab(1-olx,1-oly,1,bi,bj),af,mythid )
else if (vertadvecscheme .eq. enum_upwind_3rd) then
call gad_u3_adv_r( bi,bj,k,rtrans,tracab,af,mythid )
else if (vertadvecscheme .eq. enum_centered_4th) then
call gad_c4_adv_r( bi,bj,k,rtrans,tracab,af,mythid )
else if (vertadvecscheme .eq. enum_dst3) then
call gad_dst3_adv_r( bi,bj,k,deltatlev(k),rtrans,wfld,tracab(
$1-olx,1-oly,1,bi,bj),af,mythid )
else if (vertadvecscheme .eq. enum_dst3_flux_limit) then
if (inadmode) then
call gad_dst3_adv_r( bi,bj,k,deltatlev(k),rtrans,wfld,
$tracab(1-olx,1-oly,1,bi,bj),af,mythid )
else
call gad_dst3fl_adv_r( bi,bj,k,deltatlev(k),rtrans,wfld,
$tracab(1-olx,1-oly,1,bi,bj),af,mythid )
endif
else if (vertadvecscheme .eq. enum_os7mp) then
call gad_os7mp_adv_r( bi,bj,k,deltatlev(k),rtrans,wfld,tracab(
$1-olx,1-oly,1,bi,bj),af,mythid )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fvert(i,j,kup) = fvert(i,j,kup)+af(i,j)
end do
end do
endif
if (implicitdiffusion) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
df(i,j) = 0.d0
end do
end do
else
if (applyab_ontracer) then
call gad_diff_r( bi,bj,k,kappar,tracern,df,mythid )
else
call gad_diff_r( bi,bj,k,kappar,tracab,df,mythid )
endif
endif
if (trusegmredi) then
if (applyab_ontracer) then
call gmredi_rtransport( imin,imax,jmin,jmax,bi,bj,k,tracern,
$traceridentity,df,mythid )
else
call gmredi_rtransport( imin,imax,jmin,jmax,bi,bj,k,tracab,
$traceridentity,df,mythid )
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
fvert(i,j,kup) = fvert(i,j,kup)+df(i,j)*maskup(i,j)
end do
end do
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
gtracer(i,j,k,bi,bj) = gtracer(i,j,k,bi,bj)-recip_hfacc(i,j,k,
$bi,bj)*recip_drf(k)*recip_ra(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*(fzon(i+1,j)-fzon(i,j)+fmer(i,j+1)-fmer(i,j)+(
$fvert(i,j,kdown)-fvert(i,j,kup))*rksign-localt(i,j)*(utrans(i+1,j)
$-utrans(i,j)+vtrans(i,j+1)-vtrans(i,j)+(rtranskp1(i,j)-rtrans(i,j)
$)*radvfac)*advfac)
end do
end do
end
subroutine adgad_del2( bi, bj, k, addtdx, addtdy, addel2 )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2(1-olx:snx+olx,1-oly:sny+oly)
double precision addtdx(1-olx:snx+olx,1-oly:sny+oly)
double precision addtdy(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
addtdx(i+1,j) = addtdx(i+1,j)+addel2(i,j)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_drf(k)*recip_hfacc(i,j,k,bi,bj)
addtdx(i,j) = addtdx(i,j)-addel2(i,j)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_drf(k)*recip_hfacc(i,j,k,bi,bj)
addtdy(i,j+1) = addtdy(i,j+1)+addel2(i,j)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_drf(k)*recip_hfacc(i,j,k,bi,bj)
addtdy(i,j) = addtdy(i,j)-addel2(i,j)*recip_ra(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_drf(k)*recip_hfacc(i,j,k,bi,bj)
addel2(i,j) = 0.d0
end do
end do
end
subroutine adgad_diff_r( bi, bj, k, kappar, adkappar, tracer,
$adtracer, addfr )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision addfr(1-olx:snx+olx,1-oly:sny+oly)
double precision adkappar(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision kappar(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer km1
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
km1 = max(1,k-1)
if (k .eq. 1 .or. k .gt. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
addfr(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adkappar(i,j) = adkappar(i,j)-addfr(i,j)*ra(i,j,bi,bj)*
$deepfac2f(k)*rhofacf(k)*recip_drc(k)*(tracer(i,j,k,bi,bj)-tracer(
$i,j,km1,bi,bj))*rksign
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)-addfr(i,j)*
$kappar(i,j)*ra(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)*recip_drc(k)*
$rksign
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+addfr(i,j)
$*kappar(i,j)*ra(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)*recip_drc(k)*
$rksign
addfr(i,j) = 0.d0
end do
end do
endif
end
subroutine adgad_diff_x( bi, bj, k, xa, diffkh, adtracer, addfx )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addfx(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision diffkh
integer k
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx+1, snx+olx
adtracer(i-1,j) = adtracer(i-1,j)+addfx(i,j)*diffkh*xa(i,j)*
$recip_dxc(i,j,bi,bj)*recip_deepfacc(k)*cosfacu(j,bi,bj)
adtracer(i,j) = adtracer(i,j)-addfx(i,j)*diffkh*xa(i,j)*
$recip_dxc(i,j,bi,bj)*recip_deepfacc(k)*cosfacu(j,bi,bj)
addfx(i,j) = 0.d0
end do
addfx(1-olx,j) = 0.d0
end do
end
subroutine adgad_diff_y( bi, bj, k, ya, diffkh, adtracer, addfy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addfy(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision diffkh
integer k
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
adtracer(i,j-1) = adtracer(i,j-1)+addfy(i,j)*diffkh*ya(i,j)*
$recip_dyc(i,j,bi,bj)*recip_deepfacc(k)
adtracer(i,j) = adtracer(i,j)-addfy(i,j)*diffkh*ya(i,j)*
$recip_dyc(i,j,bi,bj)*recip_deepfacc(k)
addfy(i,j) = 0.d0
end do
end do
do i = 1-olx, snx+olx
addfy(i,1-oly) = 0.d0
end do
end
subroutine adgad_dst2u1_adv_r( bi, bj, k, advectionscheme,
$deltatloc, rtrans, adrtrans, wfld, adwfld, tracer, adtracer, adwt
$)
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer enum_dst2
parameter ( enum_dst2 = 20 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr)
integer advectionscheme
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision deltatloc
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adwabs
double precision adwabsh
double precision adwcfl
double precision adwloc
integer i
integer j
integer km1
double precision rlimit
double precision wabs
double precision wcfl
double precision wloc
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adwabs = 0.d0
adwcfl = 0.d0
adwloc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
rlimit = 0.d0
if (advectionscheme .eq. enum_dst2) then
rlimit = 1.d0
endif
km1 = max(1,k-1)
if (k .le. 1 .or. k .gt. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adwt(i,j) = 0.d0
end do
end do
else
do j = sny+oly, 1-oly, -1
adwabs = 0.d0
adwcfl = 0.d0
adwloc = 0.d0
do i = snx+olx, 1-olx, -1
adwabs = 0.d0
adwcfl = 0.d0
adwloc = 0.d0
wloc = wfld(i,j)
wcfl = abs(wloc*deltatloc*recip_drc(k))
wabs = abs(rtrans(i,j))*rksign*(1.d0-rlimit*(1.d0-wcfl))
adrtrans(i,j) = adrtrans(i,j)+adwt(i,j)*maskc(i,j,km1,bi,bj)
$*(0.5d0*tracer(i,j,km1)+0.5d0*tracer(i,j,k))
adtracer(i,j,k) = adtracer(i,j,k)+0.5d0*adwt(i,j)*maskc(i,j,
$km1,bi,bj)*(rtrans(i,j)-wabs)
adtracer(i,j,km1) = adtracer(i,j,km1)+0.5d0*adwt(i,j)*maskc(
$i,j,km1,bi,bj)*(rtrans(i,j)+wabs)
adwabs = adwabs+adwt(i,j)*maskc(i,j,km1,bi,bj)*(0.5d0*
$tracer(i,j,km1)-0.5d0*tracer(i,j,k))
adwt(i,j) = 0.d0
adwabsh = adwabs*rksign*(1.d0-rlimit*(1.d0-wcfl))
adwcfl = adwcfl+adwabs*rksign*rlimit*abs(rtrans(i,j))
adrtrans(i,j) = adrtrans(i,j)+adwabsh*sign(1.d0,rtrans(i,j))
adwabs = 0.d0
adwloc = adwloc+adwcfl*deltatloc*recip_drc(k)*sign(1.d0,
$wloc*deltatloc*recip_drc(k))
adwcfl = 0.d0
adwfld(i,j) = adwfld(i,j)+adwloc
adwloc = 0.d0
end do
end do
endif
end
subroutine adgad_dst2u1_adv_x( bi, bj, k, advectionscheme,
$calccfl, deltatloc, utrans, adutrans, ufld, adufld, tracer,
$adtracer, adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer enum_dst2
parameter ( enum_dst2 = 20 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer advectionscheme
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision aduabs
double precision aduabsh
double precision aducfl
integer i
integer j
double precision uabs
double precision ucfl
double precision xlimit
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
aduabs = 0.d0
aducfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
xlimit = 0.d0
if (advectionscheme .eq. enum_dst2) then
xlimit = 1.d0
endif
do j = sny+oly, 1-oly, -1
aduabs = 0.d0
aducfl = 0.d0
do i = snx+olx, 1-olx+1, -1
aduabs = 0.d0
aducfl = 0.d0
ucfl = ufld(i,j)
if (calccfl) then
ucfl = abs(ufld(i,j)*deltatloc*recip_dxc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
uabs = abs(utrans(i,j))*(1.d0-xlimit*(1.d0-ucfl))
adtracer(i-1,j) = adtracer(i-1,j)+0.5d0*adut(i,j)*(utrans(i,j)
$+uabs)
adtracer(i,j) = adtracer(i,j)+0.5d0*adut(i,j)*(utrans(i,j)-
$uabs)
aduabs = aduabs+adut(i,j)*(0.5d0*tracer(i-1,j)-0.5d0*tracer(i,
$j))
adutrans(i,j) = adutrans(i,j)+adut(i,j)*(0.5d0*tracer(i-1,j)+
$0.5d0*tracer(i,j))
adut(i,j) = 0.d0
aduabsh = aduabs*(1.d0-xlimit*(1.d0-ucfl))
aducfl = aducfl+aduabs*xlimit*abs(utrans(i,j))
adutrans(i,j) = adutrans(i,j)+aduabsh*sign(1.d0,utrans(i,j))
aduabs = 0.d0
if (calccfl) then
adufld(i,j) = adufld(i,j)+aducfl*deltatloc*recip_dxc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,ufld(i,j)*deltatloc*recip_dxc(i,j,
$bi,bj)*recip_deepfacc(k))
aducfl = 0.d0
endif
adufld(i,j) = adufld(i,j)+aducfl
aducfl = 0.d0
end do
end do
do j = 1-oly, sny+oly
adut(1-olx,j) = 0.d0
end do
end
subroutine adgad_dst2u1_adv_y( bi, bj, k, advectionscheme,
$calccfl, deltatloc, vtrans, advtrans, vfld, advfld, tracer,
$adtracer, advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer enum_dst2
parameter ( enum_dst2 = 20 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
integer advectionscheme
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision advabs
double precision advabsh
double precision advcfl
integer i
integer j
double precision vabs
double precision vcfl
double precision ylimit
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
advabs = 0.d0
advcfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
ylimit = 0.d0
if (advectionscheme .eq. enum_dst2) then
ylimit = 1.d0
endif
do j = sny+oly, 1-oly+1, -1
advabs = 0.d0
advcfl = 0.d0
do i = snx+olx, 1-olx, -1
advabs = 0.d0
advcfl = 0.d0
vcfl = vfld(i,j)
if (calccfl) then
vcfl = abs(vfld(i,j)*deltatloc*recip_dyc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
vabs = abs(vtrans(i,j))*(1.d0-ylimit*(1.d0-vcfl))
adtracer(i,j-1) = adtracer(i,j-1)+0.5d0*advt(i,j)*(vtrans(i,j)
$+vabs)
adtracer(i,j) = adtracer(i,j)+0.5d0*advt(i,j)*(vtrans(i,j)-
$vabs)
advabs = advabs+advt(i,j)*(0.5d0*tracer(i,j-1)-0.5d0*tracer(i,
$j))
advtrans(i,j) = advtrans(i,j)+advt(i,j)*(0.5d0*tracer(i,j-1)+
$0.5d0*tracer(i,j))
advt(i,j) = 0.d0
advabsh = advabs*(1.d0-ylimit*(1.d0-vcfl))
advcfl = advcfl+advabs*ylimit*abs(vtrans(i,j))
advtrans(i,j) = advtrans(i,j)+advabsh*sign(1.d0,vtrans(i,j))
advabs = 0.d0
if (calccfl) then
advfld(i,j) = advfld(i,j)+advcfl*deltatloc*recip_dyc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,vfld(i,j)*deltatloc*recip_dyc(i,j,
$bi,bj)*recip_deepfacc(k))
advcfl = 0.d0
endif
advfld(i,j) = advfld(i,j)+advcfl
advcfl = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,1-oly) = 0.d0
end do
end
subroutine adgad_dst3_adv_r( bi, bj, k, dtarg, rtrans, adrtrans,
$wfld, adwfld, tracer, adtracer, adwt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision dtarg
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adcfl
double precision add0
double precision add1
double precision adrj
double precision adrjm
double precision adrjp
double precision adwloc
double precision adwth
double precision adwti
double precision cfl
double precision d0
double precision d1
integer i
integer j
integer km1
integer km2
integer kp1
double precision rj
double precision rjm
double precision rjp
double precision wloc
double precision wth
double precision wti
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adcfl = 0.d0
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
adwloc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
km2 = max(1,k-2)
km1 = max(1,k-1)
kp1 = min(nr,k+1)
do j = sny+oly, 1-oly, -1
adcfl = 0.d0
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
adwloc = 0.d0
do i = snx+olx, 1-olx, -1
adcfl = 0.d0
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
adwloc = 0.d0
rjp = (tracer(i,j,k)-tracer(i,j,kp1))*maskc(i,j,kp1,bi,bj)
rj = (tracer(i,j,km1)-tracer(i,j,k))*maskc(i,j,k,bi,bj)*maskc(
$i,j,km1,bi,bj)
rjm = (tracer(i,j,km2)-tracer(i,j,km1))*maskc(i,j,km1,bi,bj)
wloc = wfld(i,j)
cfl = abs(wloc*dtarg*recip_drc(k))
d0 = (2.-cfl)*(1.-cfl)*onesixth
d1 = (1.-cfl*cfl)*onesixth
wth = abs(rtrans(i,j))
wti = abs(rtrans(i,j))
add0 = add0+adwt(i,j)*(0.5*(rtrans(i,j)+wti)*rj-0.5*(rtrans(i,
$j)-wth)*rj)
add1 = add1+adwt(i,j)*(0.5*(rtrans(i,j)+wti)*rjp-0.5*(rtrans(
$i,j)-wth)*rjm)
adrj = adrj+adwt(i,j)*(0.5*(rtrans(i,j)+wti)*d0-0.5*(rtrans(i,
$j)-wth)*d0)
adrjm = adrjm-0.5*adwt(i,j)*(rtrans(i,j)-wth)*d1
adrjp = adrjp+0.5*adwt(i,j)*(rtrans(i,j)+wti)*d1
adrtrans(i,j) = adrtrans(i,j)+adwt(i,j)*(0.5*(tracer(i,j,k)+
$d0*rj+d1*rjp)+0.5*(tracer(i,j,km1)-(d0*rj+d1*rjm)))
adtracer(i,j,k) = adtracer(i,j,k)+0.5*adwt(i,j)*(rtrans(i,j)+
$wti)
adtracer(i,j,km1) = adtracer(i,j,km1)+0.5*adwt(i,j)*(rtrans(i,
$j)-wth)
adwth = (-0.5)*adwt(i,j)*(tracer(i,j,km1)-(d0*rj+d1*rjm))
adwti = 0.5*adwt(i,j)*(tracer(i,j,k)+d0*rj+d1*rjp)
adrtrans(i,j) = adrtrans(i,j)+adwti*sign(1.d0,rtrans(i,j))
adrtrans(i,j) = adrtrans(i,j)+adwth*sign(1.d0,rtrans(i,j))
adwt(i,j) = 0.d0
adcfl = adcfl-2*add1*cfl*onesixth
add1 = 0.d0
adcfl = adcfl+add0*((-(2.-cfl))-(1.-cfl))*onesixth
add0 = 0.d0
adwloc = adwloc+adcfl*dtarg*recip_drc(k)*sign(1.d0,wloc*dtarg*
$recip_drc(k))
adcfl = 0.d0
adwfld(i,j) = adwfld(i,j)+adwloc
adwloc = 0.d0
adtracer(i,j,km1) = adtracer(i,j,km1)-adrjm*maskc(i,j,km1,bi,
$bj)
adtracer(i,j,km2) = adtracer(i,j,km2)+adrjm*maskc(i,j,km1,bi,
$bj)
adrjm = 0.d0
adtracer(i,j,k) = adtracer(i,j,k)-adrj*maskc(i,j,k,bi,bj)*
$maskc(i,j,km1,bi,bj)
adtracer(i,j,km1) = adtracer(i,j,km1)+adrj*maskc(i,j,k,bi,bj)*
$maskc(i,j,km1,bi,bj)
adrj = 0.d0
adtracer(i,j,k) = adtracer(i,j,k)+adrjp*maskc(i,j,kp1,bi,bj)
adtracer(i,j,kp1) = adtracer(i,j,kp1)-adrjp*maskc(i,j,kp1,bi,
$bj)
adrjp = 0.d0
end do
end do
end
subroutine adgad_dst3_adv_x( bi, bj, k, calccfl, deltatloc,
$utrans, adutrans, ufld, adufld, masklocw, tracer, adtracer, adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision masklocw(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision add0
double precision add1
double precision adrj
double precision adrjm
double precision adrjp
double precision aducfl
double precision aduth
double precision aduti
double precision d0
double precision d1
integer i
integer j
double precision rj
double precision rjm
double precision rjp
double precision ucfl
double precision uth
double precision uti
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
aducfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly, 1-oly, -1
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
aducfl = 0.d0
do i = snx+olx-1, 1-olx+2, -1
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
aducfl = 0.d0
rjp = (tracer(i+1,j)-tracer(i,j))*masklocw(i+1,j)
rj = (tracer(i,j)-tracer(i-1,j))*masklocw(i,j)
rjm = (tracer(i-1,j)-tracer(i-2,j))*masklocw(i-1,j)
ucfl = ufld(i,j)
if (calccfl) then
ucfl = abs(ufld(i,j)*deltatloc*recip_dxc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
d0 = (2.-ucfl)*(1.-ucfl)*onesixth
d1 = (1.-ucfl*ucfl)*onesixth
uth = abs(utrans(i,j))
uti = abs(utrans(i,j))
add0 = add0+adut(i,j)*(0.5*(utrans(i,j)+uti)*rj-0.5*(utrans(i,
$j)-uth)*rj)
add1 = add1+adut(i,j)*(0.5*(utrans(i,j)+uti)*rjm-0.5*(utrans(
$i,j)-uth)*rjp)
adrj = adrj+adut(i,j)*(0.5*(utrans(i,j)+uti)*d0-0.5*(utrans(i,
$j)-uth)*d0)
adrjm = adrjm+0.5*adut(i,j)*(utrans(i,j)+uti)*d1
adrjp = adrjp-0.5*adut(i,j)*(utrans(i,j)-uth)*d1
adtracer(i-1,j) = adtracer(i-1,j)+0.5*adut(i,j)*(utrans(i,j)+
$uti)
adtracer(i,j) = adtracer(i,j)+0.5*adut(i,j)*(utrans(i,j)-uth)
aduth = (-0.5)*adut(i,j)*(tracer(i,j)-(d0*rj+d1*rjp))
aduti = 0.5*adut(i,j)*(tracer(i-1,j)+d0*rj+d1*rjm)
adutrans(i,j) = adutrans(i,j)+adut(i,j)*(0.5*(tracer(i-1,j)+
$d0*rj+d1*rjm)+0.5*(tracer(i,j)-(d0*rj+d1*rjp)))
adutrans(i,j) = adutrans(i,j)+aduti*sign(1.d0,utrans(i,j))
adutrans(i,j) = adutrans(i,j)+aduth*sign(1.d0,utrans(i,j))
adut(i,j) = 0.d0
aducfl = aducfl-2*add1*ucfl*onesixth
add1 = 0.d0
aducfl = aducfl+add0*((-(2.-ucfl))-(1.-ucfl))*onesixth
add0 = 0.d0
if (calccfl) then
adufld(i,j) = adufld(i,j)+aducfl*deltatloc*recip_dxc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,ufld(i,j)*deltatloc*recip_dxc(i,j,
$bi,bj)*recip_deepfacc(k))
aducfl = 0.d0
endif
adufld(i,j) = adufld(i,j)+aducfl
aducfl = 0.d0
adtracer(i-2,j) = adtracer(i-2,j)-adrjm*masklocw(i-1,j)
adtracer(i-1,j) = adtracer(i-1,j)+adrjm*masklocw(i-1,j)
adrjm = 0.d0
adtracer(i-1,j) = adtracer(i-1,j)-adrj*masklocw(i,j)
adtracer(i,j) = adtracer(i,j)+adrj*masklocw(i,j)
adrj = 0.d0
adtracer(i+1,j) = adtracer(i+1,j)+adrjp*masklocw(i+1,j)
adtracer(i,j) = adtracer(i,j)-adrjp*masklocw(i+1,j)
adrjp = 0.d0
end do
end do
do j = 1-oly, sny+oly
adut(snx+olx,j) = 0.d0
adut(2-olx,j) = 0.d0
adut(1-olx,j) = 0.d0
end do
end
subroutine adgad_dst3_adv_y( bi, bj, k, calccfl, deltatloc,
$vtrans, advtrans, vfld, advfld, masklocs, tracer, adtracer, advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision masklocs(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision add0
double precision add1
double precision adrj
double precision adrjm
double precision adrjp
double precision advcfl
double precision advth
double precision advti
double precision d0
double precision d1
integer i
integer j
double precision rj
double precision rjm
double precision rjp
double precision vcfl
double precision vth
double precision vti
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
advcfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly-1, 1-oly+2, -1
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
advcfl = 0.d0
do i = snx+olx, 1-olx, -1
add0 = 0.d0
add1 = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
advcfl = 0.d0
rjp = (tracer(i,j+1)-tracer(i,j))*masklocs(i,j+1)
rj = (tracer(i,j)-tracer(i,j-1))*masklocs(i,j)
rjm = (tracer(i,j-1)-tracer(i,j-2))*masklocs(i,j-1)
vcfl = vfld(i,j)
if (calccfl) then
vcfl = abs(vfld(i,j)*deltatloc*recip_dyc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
d0 = (2.-vcfl)*(1.-vcfl)*onesixth
d1 = (1.-vcfl*vcfl)*onesixth
vth = abs(vtrans(i,j))
vti = abs(vtrans(i,j))
add0 = add0+advt(i,j)*(0.5*(vtrans(i,j)+vti)*rj-0.5*(vtrans(i,
$j)-vth)*rj)
add1 = add1+advt(i,j)*(0.5*(vtrans(i,j)+vti)*rjm-0.5*(vtrans(
$i,j)-vth)*rjp)
adrj = adrj+advt(i,j)*(0.5*(vtrans(i,j)+vti)*d0-0.5*(vtrans(i,
$j)-vth)*d0)
adrjm = adrjm+0.5*advt(i,j)*(vtrans(i,j)+vti)*d1
adrjp = adrjp-0.5*advt(i,j)*(vtrans(i,j)-vth)*d1
adtracer(i,j-1) = adtracer(i,j-1)+0.5*advt(i,j)*(vtrans(i,j)+
$vti)
adtracer(i,j) = adtracer(i,j)+0.5*advt(i,j)*(vtrans(i,j)-vth)
advth = (-0.5)*advt(i,j)*(tracer(i,j)-(d0*rj+d1*rjp))
advti = 0.5*advt(i,j)*(tracer(i,j-1)+d0*rj+d1*rjm)
advtrans(i,j) = advtrans(i,j)+advt(i,j)*(0.5*(tracer(i,j-1)+
$d0*rj+d1*rjm)+0.5*(tracer(i,j)-(d0*rj+d1*rjp)))
advtrans(i,j) = advtrans(i,j)+advti*sign(1.d0,vtrans(i,j))
advtrans(i,j) = advtrans(i,j)+advth*sign(1.d0,vtrans(i,j))
advt(i,j) = 0.d0
advcfl = advcfl-2*add1*vcfl*onesixth
add1 = 0.d0
advcfl = advcfl+add0*((-(2.-vcfl))-(1.-vcfl))*onesixth
add0 = 0.d0
if (calccfl) then
advfld(i,j) = advfld(i,j)+advcfl*deltatloc*recip_dyc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,vfld(i,j)*deltatloc*recip_dyc(i,j,
$bi,bj)*recip_deepfacc(k))
advcfl = 0.d0
endif
advfld(i,j) = advfld(i,j)+advcfl
advcfl = 0.d0
adtracer(i,j-2) = adtracer(i,j-2)-adrjm*masklocs(i,j-1)
adtracer(i,j-1) = adtracer(i,j-1)+adrjm*masklocs(i,j-1)
adrjm = 0.d0
adtracer(i,j-1) = adtracer(i,j-1)-adrj*masklocs(i,j)
adtracer(i,j) = adtracer(i,j)+adrj*masklocs(i,j)
adrj = 0.d0
adtracer(i,j+1) = adtracer(i,j+1)+adrjp*masklocs(i,j+1)
adtracer(i,j) = adtracer(i,j)-adrjp*masklocs(i,j+1)
adrjp = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,sny+oly) = 0.d0
advt(i,2-oly) = 0.d0
advt(i,1-oly) = 0.d0
end do
end
subroutine adgad_dst3fl_adv_r( bi, bj, k, dtarg, rtrans, adrtrans,
$ wfld, adwfld, tracer, adtracer, adwt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
double precision thetamax
parameter ( thetamax = 1.d+20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision dtarg
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision add0
double precision add1
double precision adpsim
double precision adpsimh
double precision adpsimi
double precision adpsip
double precision adpsiph
double precision adpsipi
double precision adrj
double precision adrjm
double precision adrjp
double precision adthetam
double precision adthetap
double precision adwcfl
double precision adwloc
double precision adwth
double precision adwti
double precision d0
double precision d1
integer i
integer j
integer km1
integer km2
integer kp1
double precision psim
double precision psimi
double precision psip
double precision psipi
double precision rj
double precision rjm
double precision rjp
double precision thetam
double precision thetap
double precision wcfl
double precision wloc
double precision wth
double precision wti
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
add0 = 0.d0
add1 = 0.d0
adpsim = 0.d0
adpsip = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
adthetam = 0.d0
adthetap = 0.d0
adwcfl = 0.d0
adwloc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
km2 = max(1,k-2)
km1 = max(1,k-1)
kp1 = min(nr,k+1)
do j = sny+oly, 1-oly, -1
do i = snx+olx, 1-olx, -1
rjp = (tracer(i,j,k)-tracer(i,j,kp1))*maskc(i,j,kp1,bi,bj)
rj = (tracer(i,j,km1)-tracer(i,j,k))*maskc(i,j,k,bi,bj)*maskc(
$i,j,km1,bi,bj)
rjm = (tracer(i,j,km2)-tracer(i,j,km1))*maskc(i,j,km1,bi,bj)
wloc = wfld(i,j)
wcfl = abs(wloc*dtarg*recip_drc(k))
d0 = (2.d0-wcfl)*(1.d0-wcfl)*onesixth
d1 = (1.d0-wcfl*wcfl)*onesixth
if (abs(rj)*thetamax .le. abs(rjm)) then
thetap = sign(thetamax,rjm*rj)
else
thetap = rjm/rj
endif
if (abs(rj)*thetamax .le. abs(rjp)) then
thetam = sign(thetamax,rjp*rj)
else
thetam = rjp/rj
endif
psip = d0+d1*thetap
psip = max(0.d0,min(min(1.d0,psip),thetap*(1.d0-wcfl)/(wcfl+
$9.9999999999999d-21)))
psim = d0+d1*thetam
psim = max(0.d0,min(min(1.d0,psim),thetam*(1.d0-wcfl)/(wcfl+
$9.9999999999999d-21)))
wth = abs(rtrans(i,j))
wti = abs(rtrans(i,j))
adpsim = adpsim+0.5*adwt(i,j)*(rtrans(i,j)+wti)*rj
adpsip = adpsip-0.5*adwt(i,j)*(rtrans(i,j)-wth)*rj
adrj = adrj+adwt(i,j)*(0.5*(rtrans(i,j)+wti)*psim-0.5*(rtrans(
$i,j)-wth)*psip)
adrtrans(i,j) = adrtrans(i,j)+adwt(i,j)*(0.5*(tracer(i,j,k)+
$psim*rj)+0.5*(tracer(i,j,km1)-psip*rj))
adtracer(i,j,k) = adtracer(i,j,k)+0.5*adwt(i,j)*(rtrans(i,j)+
$wti)
adtracer(i,j,km1) = adtracer(i,j,km1)+0.5*adwt(i,j)*(rtrans(i,
$j)-wth)
adwth = (-0.5)*adwt(i,j)*(tracer(i,j,km1)-psip*rj)
adwti = 0.5*adwt(i,j)*(tracer(i,j,k)+psim*rj)
adrtrans(i,j) = adrtrans(i,j)+adwti*sign(1.d0,rtrans(i,j))
adrtrans(i,j) = adrtrans(i,j)+adwth*sign(1.d0,rtrans(i,j))
adwt(i,j) = 0.d0
psim = d0+d1*thetam
psimi = min(1.d0,psim)
adpsimh = adpsim*(0.5-sign(0.5d0,0.d0-min(psimi,thetam*(1.d0-
$wcfl)/(wcfl+9.9999999999999d-21))))
adpsimi = adpsimh*(0.5+sign(0.5d0,thetam*(1.d0-wcfl)/(wcfl+
$9.9999999999999d-21)-psimi))
adthetam = adthetam+adpsimh*(0.5-sign(0.5d0,thetam*(1.d0-wcfl)
$/(wcfl+9.9999999999999d-21)-psimi))*((1.d0-wcfl)/(
$9.9999999999999d-21+wcfl))
adwcfl = adwcfl-adpsimh*(0.5-sign(0.5d0,thetam*(1.d0-wcfl)/(
$wcfl+9.9999999999999d-21)-psimi))*(thetam/(9.9999999999999d-21+
$wcfl)+thetam*(1.d0-wcfl)/((9.9999999999999d-21+wcfl)*(
$9.9999999999999d-21+wcfl)))
adpsim = adpsimi*(0.5-sign(0.5d0,psim-1.d0))
add0 = add0+adpsim
add1 = add1+adpsim*thetam
adthetam = adthetam+adpsim*d1
adpsim = 0.d0
psip = d0+d1*thetap
psipi = min(1.d0,psip)
adpsiph = adpsip*(0.5-sign(0.5d0,0.d0-min(psipi,thetap*(1.d0-
$wcfl)/(wcfl+9.9999999999999d-21))))
adpsipi = adpsiph*(0.5+sign(0.5d0,thetap*(1.d0-wcfl)/(wcfl+
$9.9999999999999d-21)-psipi))
adthetap = adthetap+adpsiph*(0.5-sign(0.5d0,thetap*(1.d0-wcfl)
$/(wcfl+9.9999999999999d-21)-psipi))*((1.d0-wcfl)/(
$9.9999999999999d-21+wcfl))
adwcfl = adwcfl-adpsiph*(0.5-sign(0.5d0,thetap*(1.d0-wcfl)/(
$wcfl+9.9999999999999d-21)-psipi))*(thetap/(9.9999999999999d-21+
$wcfl)+thetap*(1.d0-wcfl)/((9.9999999999999d-21+wcfl)*(
$9.9999999999999d-21+wcfl)))
adpsip = adpsipi*(0.5-sign(0.5d0,psip-1.d0))
add0 = add0+adpsip
add1 = add1+adpsip*thetap
adthetap = adthetap+adpsip*d1
adpsip = 0.d0
if (abs(rj)*thetamax .le. abs(rjp)) then
adthetam = 0.d0
else
adrj = adrj-adthetam*(rjp/(rj*rj))
adrjp = adrjp+adthetam/rj
adthetam = 0.d0
endif
if (abs(rj)*thetamax .le. abs(rjm)) then
adthetap = 0.d0
else
adrj = adrj-adthetap*(rjm/(rj*rj))
adrjm = adrjm+adthetap/rj
adthetap = 0.d0
endif
adwcfl = adwcfl-2*add1*wcfl*onesixth
add1 = 0.d0
adwcfl = adwcfl+add0*((-(2.d0-wcfl))-(1.d0-wcfl))*onesixth
add0 = 0.d0
adwloc = adwloc+adwcfl*dtarg*recip_drc(k)*sign(1.d0,wloc*
$dtarg*recip_drc(k))
adwcfl = 0.d0
adwfld(i,j) = adwfld(i,j)+adwloc
adwloc = 0.d0
adtracer(i,j,km1) = adtracer(i,j,km1)-adrjm*maskc(i,j,km1,bi,
$bj)
adtracer(i,j,km2) = adtracer(i,j,km2)+adrjm*maskc(i,j,km1,bi,
$bj)
adrjm = 0.d0
adtracer(i,j,k) = adtracer(i,j,k)-adrj*maskc(i,j,k,bi,bj)*
$maskc(i,j,km1,bi,bj)
adtracer(i,j,km1) = adtracer(i,j,km1)+adrj*maskc(i,j,k,bi,bj)*
$maskc(i,j,km1,bi,bj)
adrj = 0.d0
adtracer(i,j,k) = adtracer(i,j,k)+adrjp*maskc(i,j,kp1,bi,bj)
adtracer(i,j,kp1) = adtracer(i,j,kp1)-adrjp*maskc(i,j,kp1,bi,
$bj)
adrjp = 0.d0
end do
end do
end
subroutine adgad_dst3fl_adv_x( bi, bj, k, calccfl, deltatloc,
$utrans, adutrans, ufld, adufld, masklocw, tracer, adtracer, adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
double precision thetamax
parameter ( thetamax = 1.d+20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision masklocw(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision add0
double precision add1
double precision adpsim
double precision adpsimh
double precision adpsimi
double precision adpsip
double precision adpsiph
double precision adpsipi
double precision adrj
double precision adrjm
double precision adrjp
double precision adthetam
double precision adthetap
double precision aducfl
double precision aduth
double precision aduti
double precision d0
double precision d1
integer i
integer j
double precision psim
double precision psimi
double precision psip
double precision psipi
double precision rj
double precision rjm
double precision rjp
double precision thetam
double precision thetap
double precision ucfl
double precision uth
double precision uti
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
add0 = 0.d0
add1 = 0.d0
adpsim = 0.d0
adpsip = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
adthetam = 0.d0
adthetap = 0.d0
aducfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly, 1-oly, -1
do i = snx+olx-1, 1-olx+2, -1
rjp = (tracer(i+1,j)-tracer(i,j))*masklocw(i+1,j)
rj = (tracer(i,j)-tracer(i-1,j))*masklocw(i,j)
rjm = (tracer(i-1,j)-tracer(i-2,j))*masklocw(i-1,j)
ucfl = ufld(i,j)
if (calccfl) then
ucfl = abs(ufld(i,j)*deltatloc*recip_dxc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
d0 = (2.d0-ucfl)*(1.d0-ucfl)*onesixth
d1 = (1.d0-ucfl*ucfl)*onesixth
if (abs(rj)*thetamax .le. abs(rjm)) then
thetap = sign(thetamax,rjm*rj)
else
thetap = rjm/rj
endif
if (abs(rj)*thetamax .le. abs(rjp)) then
thetam = sign(thetamax,rjp*rj)
else
thetam = rjp/rj
endif
psip = d0+d1*thetap
psip = max(0.d0,min(min(1.d0,psip),thetap*(1.d0-ucfl)/(ucfl+
$9.9999999999999d-21)))
psim = d0+d1*thetam
psim = max(0.d0,min(min(1.d0,psim),thetam*(1.d0-ucfl)/(ucfl+
$9.9999999999999d-21)))
uth = abs(utrans(i,j))
uti = abs(utrans(i,j))
adpsim = adpsim-0.5*adut(i,j)*(utrans(i,j)-uth)*rj
adpsip = adpsip+0.5*adut(i,j)*(utrans(i,j)+uti)*rj
adrj = adrj+adut(i,j)*(0.5*(utrans(i,j)+uti)*psip-0.5*(utrans(
$i,j)-uth)*psim)
adtracer(i-1,j) = adtracer(i-1,j)+0.5*adut(i,j)*(utrans(i,j)+
$uti)
adtracer(i,j) = adtracer(i,j)+0.5*adut(i,j)*(utrans(i,j)-uth)
aduth = (-0.5)*adut(i,j)*(tracer(i,j)-psim*rj)
aduti = 0.5*adut(i,j)*(tracer(i-1,j)+psip*rj)
adutrans(i,j) = adutrans(i,j)+adut(i,j)*(0.5*(tracer(i-1,j)+
$psip*rj)+0.5*(tracer(i,j)-psim*rj))
adutrans(i,j) = adutrans(i,j)+aduti*sign(1.d0,utrans(i,j))
adutrans(i,j) = adutrans(i,j)+aduth*sign(1.d0,utrans(i,j))
adut(i,j) = 0.d0
psim = d0+d1*thetam
psimi = min(1.d0,psim)
adpsimh = adpsim*(0.5-sign(0.5d0,0.d0-min(psimi,thetam*(1.d0-
$ucfl)/(ucfl+9.9999999999999d-21))))
adpsimi = adpsimh*(0.5+sign(0.5d0,thetam*(1.d0-ucfl)/(ucfl+
$9.9999999999999d-21)-psimi))
adthetam = adthetam+adpsimh*(0.5-sign(0.5d0,thetam*(1.d0-ucfl)
$/(ucfl+9.9999999999999d-21)-psimi))*((1.d0-ucfl)/(
$9.9999999999999d-21+ucfl))
aducfl = aducfl-adpsimh*(0.5-sign(0.5d0,thetam*(1.d0-ucfl)/(
$ucfl+9.9999999999999d-21)-psimi))*(thetam/(9.9999999999999d-21+
$ucfl)+thetam*(1.d0-ucfl)/((9.9999999999999d-21+ucfl)*(
$9.9999999999999d-21+ucfl)))
adpsim = adpsimi*(0.5-sign(0.5d0,psim-1.d0))
add0 = add0+adpsim
add1 = add1+adpsim*thetam
adthetam = adthetam+adpsim*d1
adpsim = 0.d0
psip = d0+d1*thetap
psipi = min(1.d0,psip)
adpsiph = adpsip*(0.5-sign(0.5d0,0.d0-min(psipi,thetap*(1.d0-
$ucfl)/(ucfl+9.9999999999999d-21))))
adpsipi = adpsiph*(0.5+sign(0.5d0,thetap*(1.d0-ucfl)/(ucfl+
$9.9999999999999d-21)-psipi))
adthetap = adthetap+adpsiph*(0.5-sign(0.5d0,thetap*(1.d0-ucfl)
$/(ucfl+9.9999999999999d-21)-psipi))*((1.d0-ucfl)/(
$9.9999999999999d-21+ucfl))
aducfl = aducfl-adpsiph*(0.5-sign(0.5d0,thetap*(1.d0-ucfl)/(
$ucfl+9.9999999999999d-21)-psipi))*(thetap/(9.9999999999999d-21+
$ucfl)+thetap*(1.d0-ucfl)/((9.9999999999999d-21+ucfl)*(
$9.9999999999999d-21+ucfl)))
adpsip = adpsipi*(0.5-sign(0.5d0,psip-1.d0))
add0 = add0+adpsip
add1 = add1+adpsip*thetap
adthetap = adthetap+adpsip*d1
adpsip = 0.d0
if (abs(rj)*thetamax .le. abs(rjp)) then
adthetam = 0.d0
else
adrj = adrj-adthetam*(rjp/(rj*rj))
adrjp = adrjp+adthetam/rj
adthetam = 0.d0
endif
if (abs(rj)*thetamax .le. abs(rjm)) then
adthetap = 0.d0
else
adrj = adrj-adthetap*(rjm/(rj*rj))
adrjm = adrjm+adthetap/rj
adthetap = 0.d0
endif
aducfl = aducfl-2*add1*ucfl*onesixth
add1 = 0.d0
aducfl = aducfl+add0*((-(2.d0-ucfl))-(1.d0-ucfl))*onesixth
add0 = 0.d0
if (calccfl) then
adufld(i,j) = adufld(i,j)+aducfl*deltatloc*recip_dxc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,ufld(i,j)*deltatloc*recip_dxc(i,j,
$bi,bj)*recip_deepfacc(k))
aducfl = 0.d0
endif
adufld(i,j) = adufld(i,j)+aducfl
aducfl = 0.d0
adtracer(i-2,j) = adtracer(i-2,j)-adrjm*masklocw(i-1,j)
adtracer(i-1,j) = adtracer(i-1,j)+adrjm*masklocw(i-1,j)
adrjm = 0.d0
adtracer(i-1,j) = adtracer(i-1,j)-adrj*masklocw(i,j)
adtracer(i,j) = adtracer(i,j)+adrj*masklocw(i,j)
adrj = 0.d0
adtracer(i+1,j) = adtracer(i+1,j)+adrjp*masklocw(i+1,j)
adtracer(i,j) = adtracer(i,j)-adrjp*masklocw(i+1,j)
adrjp = 0.d0
end do
end do
do j = 1-oly, sny+oly
adut(snx+olx,j) = 0.d0
adut(2-olx,j) = 0.d0
adut(1-olx,j) = 0.d0
end do
end
subroutine adgad_dst3fl_adv_y( bi, bj, k, calccfl, deltatloc,
$vtrans, advtrans, vfld, advfld, masklocs, tracer, adtracer, advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
double precision thetamax
parameter ( thetamax = 1.d+20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision masklocs(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision add0
double precision add1
double precision adpsim
double precision adpsimh
double precision adpsimi
double precision adpsip
double precision adpsiph
double precision adpsipi
double precision adrj
double precision adrjm
double precision adrjp
double precision adthetam
double precision adthetap
double precision advcfl
double precision advth
double precision advti
double precision d0
double precision d1
integer i
integer j
double precision psim
double precision psimi
double precision psip
double precision psipi
double precision rj
double precision rjm
double precision rjp
double precision thetam
double precision thetap
double precision vcfl
double precision vth
double precision vti
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
add0 = 0.d0
add1 = 0.d0
adpsim = 0.d0
adpsip = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
adthetam = 0.d0
adthetap = 0.d0
advcfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly-1, 1-oly+2, -1
do i = snx+olx, 1-olx, -1
rjp = (tracer(i,j+1)-tracer(i,j))*masklocs(i,j+1)
rj = (tracer(i,j)-tracer(i,j-1))*masklocs(i,j)
rjm = (tracer(i,j-1)-tracer(i,j-2))*masklocs(i,j-1)
vcfl = vfld(i,j)
if (calccfl) then
vcfl = abs(vfld(i,j)*deltatloc*recip_dyc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
d0 = (2.d0-vcfl)*(1.d0-vcfl)*onesixth
d1 = (1.d0-vcfl*vcfl)*onesixth
if (abs(rj)*thetamax .le. abs(rjm)) then
thetap = sign(thetamax,rjm*rj)
else
thetap = rjm/rj
endif
if (abs(rj)*thetamax .le. abs(rjp)) then
thetam = sign(thetamax,rjp*rj)
else
thetam = rjp/rj
endif
psip = d0+d1*thetap
psip = max(0.d0,min(min(1.d0,psip),thetap*(1.d0-vcfl)/(vcfl+
$9.9999999999999d-21)))
psim = d0+d1*thetam
psim = max(0.d0,min(min(1.d0,psim),thetam*(1.d0-vcfl)/(vcfl+
$9.9999999999999d-21)))
vth = abs(vtrans(i,j))
vti = abs(vtrans(i,j))
adpsim = adpsim-0.5*advt(i,j)*(vtrans(i,j)-vth)*rj
adpsip = adpsip+0.5*advt(i,j)*(vtrans(i,j)+vti)*rj
adrj = adrj+advt(i,j)*(0.5*(vtrans(i,j)+vti)*psip-0.5*(vtrans(
$i,j)-vth)*psim)
adtracer(i,j-1) = adtracer(i,j-1)+0.5*advt(i,j)*(vtrans(i,j)+
$vti)
adtracer(i,j) = adtracer(i,j)+0.5*advt(i,j)*(vtrans(i,j)-vth)
advth = (-0.5)*advt(i,j)*(tracer(i,j)-psim*rj)
advti = 0.5*advt(i,j)*(tracer(i,j-1)+psip*rj)
advtrans(i,j) = advtrans(i,j)+advt(i,j)*(0.5*(tracer(i,j-1)+
$psip*rj)+0.5*(tracer(i,j)-psim*rj))
advtrans(i,j) = advtrans(i,j)+advti*sign(1.d0,vtrans(i,j))
advtrans(i,j) = advtrans(i,j)+advth*sign(1.d0,vtrans(i,j))
advt(i,j) = 0.d0
psim = d0+d1*thetam
psimi = min(1.d0,psim)
adpsimh = adpsim*(0.5-sign(0.5d0,0.d0-min(psimi,thetam*(1.d0-
$vcfl)/(vcfl+9.9999999999999d-21))))
adpsimi = adpsimh*(0.5+sign(0.5d0,thetam*(1.d0-vcfl)/(vcfl+
$9.9999999999999d-21)-psimi))
adthetam = adthetam+adpsimh*(0.5-sign(0.5d0,thetam*(1.d0-vcfl)
$/(vcfl+9.9999999999999d-21)-psimi))*((1.d0-vcfl)/(
$9.9999999999999d-21+vcfl))
advcfl = advcfl-adpsimh*(0.5-sign(0.5d0,thetam*(1.d0-vcfl)/(
$vcfl+9.9999999999999d-21)-psimi))*(thetam/(9.9999999999999d-21+
$vcfl)+thetam*(1.d0-vcfl)/((9.9999999999999d-21+vcfl)*(
$9.9999999999999d-21+vcfl)))
adpsim = adpsimi*(0.5-sign(0.5d0,psim-1.d0))
add0 = add0+adpsim
add1 = add1+adpsim*thetam
adthetam = adthetam+adpsim*d1
adpsim = 0.d0
psip = d0+d1*thetap
psipi = min(1.d0,psip)
adpsiph = adpsip*(0.5-sign(0.5d0,0.d0-min(psipi,thetap*(1.d0-
$vcfl)/(vcfl+9.9999999999999d-21))))
adpsipi = adpsiph*(0.5+sign(0.5d0,thetap*(1.d0-vcfl)/(vcfl+
$9.9999999999999d-21)-psipi))
adthetap = adthetap+adpsiph*(0.5-sign(0.5d0,thetap*(1.d0-vcfl)
$/(vcfl+9.9999999999999d-21)-psipi))*((1.d0-vcfl)/(
$9.9999999999999d-21+vcfl))
advcfl = advcfl-adpsiph*(0.5-sign(0.5d0,thetap*(1.d0-vcfl)/(
$vcfl+9.9999999999999d-21)-psipi))*(thetap/(9.9999999999999d-21+
$vcfl)+thetap*(1.d0-vcfl)/((9.9999999999999d-21+vcfl)*(
$9.9999999999999d-21+vcfl)))
adpsip = adpsipi*(0.5-sign(0.5d0,psip-1.d0))
add0 = add0+adpsip
add1 = add1+adpsip*thetap
adthetap = adthetap+adpsip*d1
adpsip = 0.d0
if (abs(rj)*thetamax .le. abs(rjp)) then
adthetam = 0.d0
else
adrj = adrj-adthetam*(rjp/(rj*rj))
adrjp = adrjp+adthetam/rj
adthetam = 0.d0
endif
if (abs(rj)*thetamax .le. abs(rjm)) then
adthetap = 0.d0
else
adrj = adrj-adthetap*(rjm/(rj*rj))
adrjm = adrjm+adthetap/rj
adthetap = 0.d0
endif
advcfl = advcfl-2*add1*vcfl*onesixth
add1 = 0.d0
advcfl = advcfl+add0*((-(2.d0-vcfl))-(1.d0-vcfl))*onesixth
add0 = 0.d0
if (calccfl) then
advfld(i,j) = advfld(i,j)+advcfl*deltatloc*recip_dyc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,vfld(i,j)*deltatloc*recip_dyc(i,j,
$bi,bj)*recip_deepfacc(k))
advcfl = 0.d0
endif
advfld(i,j) = advfld(i,j)+advcfl
advcfl = 0.d0
adtracer(i,j-2) = adtracer(i,j-2)-adrjm*masklocs(i,j-1)
adtracer(i,j-1) = adtracer(i,j-1)+adrjm*masklocs(i,j-1)
adrjm = 0.d0
adtracer(i,j-1) = adtracer(i,j-1)-adrj*masklocs(i,j)
adtracer(i,j) = adtracer(i,j)+adrj*masklocs(i,j)
adrj = 0.d0
adtracer(i,j+1) = adtracer(i,j+1)+adrjp*masklocs(i,j+1)
adtracer(i,j) = adtracer(i,j)-adrjp*masklocs(i,j+1)
adrjp = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,sny+oly) = 0.d0
advt(i,2-oly) = 0.d0
advt(i,1-oly) = 0.d0
end do
end
subroutine adgad_fluxlimit_adv_r( bi, bj, k, dtarg, rtrans,
$adrtrans, wfld, adwfld, tracer, adtracer, adwt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision dtarg
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adcr
double precision adcrh
double precision adcri
double precision adcrj
double precision adrj
double precision adrjm
double precision adrjp
double precision adwcfl
double precision adwloc
double precision adwth
double precision cr
double precision cri
double precision crj
integer i
integer j
integer km1
integer km2
integer kp1
double precision rj
double precision rjm
double precision rjp
double precision wcfl
double precision wloc
double precision wth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adcr = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
adwcfl = 0.d0
adwloc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
km2 = max(1,k-2)
km1 = max(1,k-1)
kp1 = min(nr,k+1)
if (k .gt. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adwt(i,j) = 0.d0
end do
end do
else
do j = sny+oly, 1-oly, -1
do i = snx+olx, 1-olx, -1
wloc = wfld(i,j)
wcfl = abs(wloc*dtarg*recip_drc(k))
rjp = (tracer(i,j,kp1)-tracer(i,j,k))*maskc(i,j,kp1,bi,bj)
rj = tracer(i,j,k)-tracer(i,j,km1)
rjm = (tracer(i,j,km1)-tracer(i,j,km2))*maskc(i,j,km2,bi,bj)
if (rj .ne. 0.) then
if (rtrans(i,j) .lt. 0.) then
cr = rjm/rj
else
cr = rjp/rj
endif
else
if (rtrans(i,j) .lt. 0.) then
cr = rjm*1.e+20
else
cr = rjp*1.e+20
endif
endif
cr = max(0.d0,max(min(1.d0,2.d0*cr),min(2.d0,cr)))
wth = abs(rtrans(i,j))
adcr = adcr+0.5d0*adwt(i,j)*maskc(i,j,km1,bi,bj)*wth*((-1)+
$wcfl)*rj
adrj = adrj+0.5d0*adwt(i,j)*maskc(i,j,km1,bi,bj)*wth*(1.-cr+
$wcfl*cr)
adrtrans(i,j) = adrtrans(i,j)+0.5d0*adwt(i,j)*maskc(i,j,km1,
$bi,bj)*(tracer(i,j,k)+tracer(i,j,km1))
adtracer(i,j,k) = adtracer(i,j,k)+0.5d0*adwt(i,j)*maskc(i,j,
$km1,bi,bj)*rtrans(i,j)
adtracer(i,j,km1) = adtracer(i,j,km1)+0.5d0*adwt(i,j)*maskc(
$i,j,km1,bi,bj)*rtrans(i,j)
adwcfl = adwcfl+0.5d0*adwt(i,j)*maskc(i,j,km1,bi,bj)*wth*cr*
$rj
adwth = 0.5d0*adwt(i,j)*maskc(i,j,km1,bi,bj)*(1.-cr+wcfl*cr)
$*rj
adrtrans(i,j) = adrtrans(i,j)+adwth*sign(1.d0,rtrans(i,j))
adwt(i,j) = 0.d0
if (rj .ne. 0.) then
if (rtrans(i,j) .lt. 0.) then
cr = rjm/rj
else
cr = rjp/rj
endif
else
if (rtrans(i,j) .lt. 0.) then
cr = rjm*1.e+20
else
cr = rjp*1.e+20
endif
endif
cri = min(1.d0,2.d0*cr)
crj = min(2.d0,cr)
adcrh = adcr*(0.5-sign(0.5d0,0.d0-max(cri,crj)))
adcri = adcrh*(0.5+sign(0.5d0,cri-crj))
adcrj = adcrh*(0.5-sign(0.5d0,cri-crj))
adcr = adcrj*(0.5-sign(0.5d0,cr-2.d0))
adcr = 2*adcri*(0.5-sign(0.5d0,2.d0*cr-1.d0))
if (rj .ne. 0.) then
if (rtrans(i,j) .lt. 0.) then
adrj = adrj-adcr*(rjm/(rj*rj))
adrjm = adrjm+adcr/rj
adcr = 0.d0
else
adrj = adrj-adcr*(rjp/(rj*rj))
adrjp = adrjp+adcr/rj
adcr = 0.d0
endif
else
if (rtrans(i,j) .lt. 0.) then
adrjm = adrjm+1.e+20*adcr
adcr = 0.d0
else
adrjp = adrjp+1.e+20*adcr
adcr = 0.d0
endif
endif
adtracer(i,j,km1) = adtracer(i,j,km1)+adrjm*maskc(i,j,km2,
$bi,bj)
adtracer(i,j,km2) = adtracer(i,j,km2)-adrjm*maskc(i,j,km2,
$bi,bj)
adrjm = 0.d0
adtracer(i,j,k) = adtracer(i,j,k)+adrj
adtracer(i,j,km1) = adtracer(i,j,km1)-adrj
adrj = 0.d0
adtracer(i,j,k) = adtracer(i,j,k)-adrjp*maskc(i,j,kp1,bi,bj)
adtracer(i,j,kp1) = adtracer(i,j,kp1)+adrjp*maskc(i,j,kp1,
$bi,bj)
adrjp = 0.d0
adwloc = adwloc+adwcfl*dtarg*recip_drc(k)*sign(1.d0,wloc*
$dtarg*recip_drc(k))
adwcfl = 0.d0
adwfld(i,j) = adwfld(i,j)+adwloc
adwloc = 0.d0
end do
end do
endif
end
subroutine adgad_fluxlimit_adv_x( bi, bj, k, calccfl, deltatloc,
$utrans, adutrans, ufld, adufld, masklocw, tracer, adtracer, adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision masklocw(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adcr
double precision adcrh
double precision adcri
double precision adcrj
double precision adrj
double precision adrjm
double precision adrjp
double precision aducfl
double precision aduth
double precision cr
double precision cri
double precision crj
integer i
integer j
double precision rj
double precision rjm
double precision rjp
double precision ucfl
double precision uth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adcr = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
aducfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly, 1-oly, -1
do i = snx+olx-1, 1-olx+2, -1
ucfl = ufld(i,j)
if (calccfl) then
ucfl = abs(ufld(i,j)*deltatloc*recip_dxc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
rjp = (tracer(i+1,j)-tracer(i,j))*masklocw(i+1,j)
rj = (tracer(i,j)-tracer(i-1,j))*masklocw(i,j)
rjm = (tracer(i-1,j)-tracer(i-2,j))*masklocw(i-1,j)
if (rj .ne. 0.) then
if (utrans(i,j) .gt. 0) then
cr = rjm/rj
else
cr = rjp/rj
endif
else
if (utrans(i,j) .gt. 0) then
cr = rjm*1.e+20
else
cr = rjp*1.e+20
endif
endif
cr = max(0.d0,max(min(1.d0,2.d0*cr),min(2.d0,cr)))
uth = abs(utrans(i,j))
adcr = adcr-0.5d0*adut(i,j)*uth*((-1)+ucfl)*rj
adrj = adrj-0.5d0*adut(i,j)*uth*(1.-cr+ucfl*cr)
adtracer(i-1,j) = adtracer(i-1,j)+0.5d0*adut(i,j)*utrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*adut(i,j)*utrans(i,j)
aducfl = aducfl-0.5d0*adut(i,j)*uth*cr*rj
aduth = -(0.5d0*adut(i,j)*(1.-cr+ucfl*cr)*rj)
adutrans(i,j) = adutrans(i,j)+0.5d0*adut(i,j)*(tracer(i,j)+
$tracer(i-1,j))
adutrans(i,j) = adutrans(i,j)+aduth*sign(1.d0,utrans(i,j))
adut(i,j) = 0.d0
if (rj .ne. 0.) then
if (utrans(i,j) .gt. 0) then
cr = rjm/rj
else
cr = rjp/rj
endif
else
if (utrans(i,j) .gt. 0) then
cr = rjm*1.e+20
else
cr = rjp*1.e+20
endif
endif
cri = min(1.d0,2.d0*cr)
crj = min(2.d0,cr)
adcrh = adcr*(0.5-sign(0.5d0,0.d0-max(cri,crj)))
adcri = adcrh*(0.5+sign(0.5d0,cri-crj))
adcrj = adcrh*(0.5-sign(0.5d0,cri-crj))
adcr = adcrj*(0.5-sign(0.5d0,cr-2.d0))
adcr = 2*adcri*(0.5-sign(0.5d0,2.d0*cr-1.d0))
if (rj .ne. 0.) then
if (utrans(i,j) .gt. 0) then
adrj = adrj-adcr*(rjm/(rj*rj))
adrjm = adrjm+adcr/rj
adcr = 0.d0
else
adrj = adrj-adcr*(rjp/(rj*rj))
adrjp = adrjp+adcr/rj
adcr = 0.d0
endif
else
if (utrans(i,j) .gt. 0) then
adrjm = adrjm+1.e+20*adcr
adcr = 0.d0
else
adrjp = adrjp+1.e+20*adcr
adcr = 0.d0
endif
endif
adtracer(i-2,j) = adtracer(i-2,j)-adrjm*masklocw(i-1,j)
adtracer(i-1,j) = adtracer(i-1,j)+adrjm*masklocw(i-1,j)
adrjm = 0.d0
adtracer(i-1,j) = adtracer(i-1,j)-adrj*masklocw(i,j)
adtracer(i,j) = adtracer(i,j)+adrj*masklocw(i,j)
adrj = 0.d0
adtracer(i+1,j) = adtracer(i+1,j)+adrjp*masklocw(i+1,j)
adtracer(i,j) = adtracer(i,j)-adrjp*masklocw(i+1,j)
adrjp = 0.d0
if (calccfl) then
adufld(i,j) = adufld(i,j)+aducfl*deltatloc*recip_dxc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,ufld(i,j)*deltatloc*recip_dxc(i,j,
$bi,bj)*recip_deepfacc(k))
aducfl = 0.d0
endif
adufld(i,j) = adufld(i,j)+aducfl
aducfl = 0.d0
end do
end do
do j = 1-oly, sny+oly
adut(snx+olx,j) = 0.d0
adut(2-olx,j) = 0.d0
adut(1-olx,j) = 0.d0
end do
end
subroutine adgad_fluxlimit_adv_y( bi, bj, k, calccfl, deltatloc,
$vtrans, advtrans, vfld, advfld, masklocs, tracer, adtracer, advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
integer k
double precision masklocs(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adcr
double precision adcrh
double precision adcri
double precision adcrj
double precision adrj
double precision adrjm
double precision adrjp
double precision advcfl
double precision advth
double precision cr
double precision cri
double precision crj
integer i
integer j
double precision rj
double precision rjm
double precision rjp
double precision vcfl
double precision vth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adcr = 0.d0
adrj = 0.d0
adrjm = 0.d0
adrjp = 0.d0
advcfl = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly-1, 1-oly+2, -1
do i = snx+olx, 1-olx, -1
vcfl = vfld(i,j)
if (calccfl) then
vcfl = abs(vfld(i,j)*deltatloc*recip_dyc(i,j,bi,bj)*
$recip_deepfacc(k))
endif
rjp = (tracer(i,j+1)-tracer(i,j))*masklocs(i,j+1)
rj = (tracer(i,j)-tracer(i,j-1))*masklocs(i,j)
rjm = (tracer(i,j-1)-tracer(i,j-2))*masklocs(i,j-1)
if (rj .ne. 0.) then
if (vtrans(i,j) .gt. 0) then
cr = rjm/rj
else
cr = rjp/rj
endif
else
if (vtrans(i,j) .gt. 0) then
cr = rjm*1.e+20
else
cr = rjp*1.e+20
endif
endif
cr = max(0.d0,max(min(1.d0,2.d0*cr),min(2.d0,cr)))
vth = abs(vtrans(i,j))
adcr = adcr-0.5d0*advt(i,j)*vth*((-1)+vcfl)*rj
adrj = adrj-0.5d0*advt(i,j)*vth*(1.-cr+vcfl*cr)
adtracer(i,j-1) = adtracer(i,j-1)+0.5d0*advt(i,j)*vtrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*advt(i,j)*vtrans(i,j)
advcfl = advcfl-0.5d0*advt(i,j)*vth*cr*rj
advth = -(0.5d0*advt(i,j)*(1.-cr+vcfl*cr)*rj)
advtrans(i,j) = advtrans(i,j)+0.5d0*advt(i,j)*(tracer(i,j)+
$tracer(i,j-1))
advtrans(i,j) = advtrans(i,j)+advth*sign(1.d0,vtrans(i,j))
advt(i,j) = 0.d0
if (rj .ne. 0.) then
if (vtrans(i,j) .gt. 0) then
cr = rjm/rj
else
cr = rjp/rj
endif
else
if (vtrans(i,j) .gt. 0) then
cr = rjm*1.e+20
else
cr = rjp*1.e+20
endif
endif
cri = min(1.d0,2.d0*cr)
crj = min(2.d0,cr)
adcrh = adcr*(0.5-sign(0.5d0,0.d0-max(cri,crj)))
adcri = adcrh*(0.5+sign(0.5d0,cri-crj))
adcrj = adcrh*(0.5-sign(0.5d0,cri-crj))
adcr = adcrj*(0.5-sign(0.5d0,cr-2.d0))
adcr = 2*adcri*(0.5-sign(0.5d0,2.d0*cr-1.d0))
if (rj .ne. 0.) then
if (vtrans(i,j) .gt. 0) then
adrj = adrj-adcr*(rjm/(rj*rj))
adrjm = adrjm+adcr/rj
adcr = 0.d0
else
adrj = adrj-adcr*(rjp/(rj*rj))
adrjp = adrjp+adcr/rj
adcr = 0.d0
endif
else
if (vtrans(i,j) .gt. 0) then
adrjm = adrjm+1.e+20*adcr
adcr = 0.d0
else
adrjp = adrjp+1.e+20*adcr
adcr = 0.d0
endif
endif
adtracer(i,j-2) = adtracer(i,j-2)-adrjm*masklocs(i,j-1)
adtracer(i,j-1) = adtracer(i,j-1)+adrjm*masklocs(i,j-1)
adrjm = 0.d0
adtracer(i,j-1) = adtracer(i,j-1)-adrj*masklocs(i,j)
adtracer(i,j) = adtracer(i,j)+adrj*masklocs(i,j)
adrj = 0.d0
adtracer(i,j+1) = adtracer(i,j+1)+adrjp*masklocs(i,j+1)
adtracer(i,j) = adtracer(i,j)-adrjp*masklocs(i,j+1)
adrjp = 0.d0
if (calccfl) then
advfld(i,j) = advfld(i,j)+advcfl*deltatloc*recip_dyc(i,j,bi,
$bj)*recip_deepfacc(k)*sign(1.d0,vfld(i,j)*deltatloc*recip_dyc(i,j,
$bi,bj)*recip_deepfacc(k))
advcfl = 0.d0
endif
advfld(i,j) = advfld(i,j)+advcfl
advcfl = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,sny+oly) = 0.d0
advt(i,2-oly) = 0.d0
advt(i,1-oly) = 0.d0
end do
end
subroutine adgad_grad_x( bi, bj, k, xa, adtracer, addtdx )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addtdx(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx+1, snx+olx
adtracer(i-1,j) = adtracer(i-1,j)-addtdx(i,j)*xa(i,j)*
$recip_dxc(i,j,bi,bj)*recip_deepfacc(k)*sqcosfacu(j,bi,bj)
adtracer(i,j) = adtracer(i,j)+addtdx(i,j)*xa(i,j)*recip_dxc(i,
$j,bi,bj)*recip_deepfacc(k)*sqcosfacu(j,bi,bj)
addtdx(i,j) = 0.d0
end do
addtdx(1-olx,j) = 0.d0
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 1, .false. ,adtracer )
endif
end
subroutine adgad_grad_y( bi, bj, k, ya, adtracer, addtdy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addtdy(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
adtracer(i,j-1) = adtracer(i,j-1)-addtdy(i,j)*ya(i,j)*
$recip_dyc(i,j,bi,bj)*recip_deepfacc(k)
adtracer(i,j) = adtracer(i,j)+addtdy(i,j)*ya(i,j)*recip_dyc(i,
$j,bi,bj)*recip_deepfacc(k)
addtdy(i,j) = 0.d0
end do
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 2, .false. ,adtracer )
endif
end
subroutine adgad_os7mp_adv_r( bi, bj, k, deltatloc, wtrans,
$adwtrans, wfld, adwfld, q, adq, adwt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adq(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
double precision adwtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision deltatloc
integer k
double precision q(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision wtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision a
double precision ada
double precision adb
double precision adc
double precision adcfl
double precision add
double precision add2
double precision add2m1
double precision add2p1
double precision addel2
double precision addel2m
double precision addel2mm
double precision addel2p
double precision addel2pp
double precision addel3m
double precision addel3mm
double precision addel3p
double precision addel3pp
double precision addel4
double precision addel4m
double precision addel4p
double precision addel5m
double precision addel5p
double precision addel6
double precision addeli
double precision addelip
double precision addelm
double precision addelmm
double precision addelmmm
double precision addelp
double precision addelpp
double precision addm1h
double precision addm1hi
double precision addm1hj
double precision addm1hk
double precision addm1hm
double precision addm1hn
double precision addm1ho
double precision addp1h
double precision addp1hi
double precision addp1hj
double precision addp1hk
double precision addp1hm
double precision addp1hn
double precision addp1ho
double precision adfac
double precision adphi
double precision adphih
double precision adphilc
double precision adphimax
double precision adphimaxh
double precision adphimaxk
double precision adphimd
double precision adphimin
double precision adphimink
double precision adpsi
double precision adqi
double precision adqim
double precision adqimm
double precision adqimmm
double precision adqip
double precision adqipp
double precision adrecip_deli
double precision adrecip_delii
double precision adrecip_delip
double precision adrecip_delipi
double precision adrp1h
double precision adrp1h_cfl
double precision adwloc
double precision b
double precision c
double precision cfl
double precision d
double precision d2
double precision d2m1
double precision d2p1
double precision del2
double precision del2m
double precision del2mm
double precision del2p
double precision del2pp
double precision del3m
double precision del3mm
double precision del3p
double precision del3pp
double precision del4
double precision del4m
double precision del4p
double precision del5m
double precision del5p
double precision del6
double precision deli
double precision delip
double precision delm
double precision delmm
double precision delmmm
double precision delp
double precision delpp
double precision dm1h
double precision dm1hi
double precision dm1hj
double precision dm1hm
double precision dm1hn
double precision dp1h
double precision dp1hi
double precision dp1hj
double precision dp1hm
double precision dp1hn
double precision eps
double precision fac
integer i
integer j
integer km1
integer km2
integer km3
integer km4
integer kp1
integer kp2
integer kp3
double precision mski
double precision mskim
double precision mskimm
double precision mskimmm
double precision mskip
double precision phi
double precision phih
double precision philc
double precision phimax
double precision phimaxh
double precision phimaxi
double precision phimaxj
double precision phimaxk
double precision phimd
double precision phimin
double precision phiminh
double precision phimini
double precision phiminj
double precision phimink
double precision psi
double precision qi
double precision qim
double precision qimm
double precision qimmm
double precision qip
double precision qipp
double precision recip_deli
double precision recip_delih
double precision recip_delii
double precision recip_delip
double precision recip_deliph
double precision recip_delipi
double precision rp1h
double precision rp1h_cfl
double precision wloc
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
ada = 0.d0
adb = 0.d0
adc = 0.d0
adcfl = 0.d0
add = 0.d0
add2 = 0.d0
add2m1 = 0.d0
add2p1 = 0.d0
addel2 = 0.d0
addel2m = 0.d0
addel2mm = 0.d0
addel2p = 0.d0
addel2pp = 0.d0
addel3m = 0.d0
addel3mm = 0.d0
addel3p = 0.d0
addel3pp = 0.d0
addel4 = 0.d0
addel4m = 0.d0
addel4p = 0.d0
addel5m = 0.d0
addel5p = 0.d0
addel6 = 0.d0
addeli = 0.d0
addelip = 0.d0
addelm = 0.d0
addelmm = 0.d0
addelmmm = 0.d0
addelp = 0.d0
addelpp = 0.d0
addm1h = 0.d0
addp1h = 0.d0
adfac = 0.d0
adphi = 0.d0
adphilc = 0.d0
adphimax = 0.d0
adphimd = 0.d0
adphimin = 0.d0
adpsi = 0.d0
adqi = 0.d0
adqim = 0.d0
adqimm = 0.d0
adqimmm = 0.d0
adqip = 0.d0
adqipp = 0.d0
adrecip_deli = 0.d0
adrecip_delip = 0.d0
adrp1h = 0.d0
adrp1h_cfl = 0.d0
adwloc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
eps = 9.9999999999999d-21
km4 = max(1,k-4)
km3 = max(1,k-3)
km2 = max(1,k-2)
km1 = max(1,k-1)
kp1 = min(nr,k+1)
kp2 = min(nr,k+2)
kp3 = min(nr,k+3)
do j = sny+oly, 1-oly, -1
do i = snx+olx, 1-olx, -1
wloc = wfld(i,j)
cfl = abs(wloc*deltatloc*recip_drc(k))
if (wtrans(i,j) .lt. 0.d0) then
qipp = q(i,j,kp1)
qip = q(i,j,k)
qi = q(i,j,km1)
qim = q(i,j,km2)
qimm = q(i,j,km3)
qimmm = q(i,j,km4)
mskip = maskc(i,j,kp1,bi,bj)*float(kp1-k)
mski = maskc(i,j,k,bi,bj)*float(k-km1)
mskim = maskc(i,j,km1,bi,bj)*float(km1-km2)
mskimm = maskc(i,j,km2,bi,bj)*float(km2-km3)
mskimmm = maskc(i,j,km3,bi,bj)*float(km3-km4)
else if (wtrans(i,j) .gt. 0.d0) then
qipp = q(i,j,km2)
qip = q(i,j,km1)
qi = q(i,j,k)
qim = q(i,j,kp1)
qimm = q(i,j,kp2)
qimmm = q(i,j,kp3)
mskip = maskc(i,j,km1,bi,bj)*float(km1-km2)
mski = maskc(i,j,k,bi,bj)*float(k-km1)
mskim = maskc(i,j,kp1,bi,bj)*float(kp1-k)
mskimm = maskc(i,j,kp2,bi,bj)*float(kp2-kp1)
mskimmm = maskc(i,j,kp3,bi,bj)*float(kp3-kp2)
else
qipp = 0.d0
qip = 0.d0
qi = 0.d0
qim = 0.d0
qimm = 0.d0
qimmm = 0.d0
mskip = 0.d0
mski = 0.d0
mskim = 0.d0
mskimm = 0.d0
mskimmm = 0.d0
endif
if (wtrans(i,j) .ne. 0.d0) then
fac = 1.d0
delp = (qip-qi)*mski
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
delm = (qi-qim)*mskim
del2 = delp-delm
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
delpp = (qipp-qip)*mskip*mski
del2p = delpp-delp
del3p = del2p-del2
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
delmm = (qim-qimm)*mskimm*mskim
del2m = delm-delmm
del3m = del2-del2m
del4 = del3p-del3m
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
del2pp = delpp-delp
del3pp = del2pp-del2p
del4p = del3pp-del3p
del5p = del4p-del4
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
delmmm = (qimm-qimmm)*mskimmm*mskimm*mskim
del2mm = delmm-delmmm
del3mm = del2m-del2mm
del4m = del3m-del3mm
del5m = del4-del4m
del6 = del5p-del5m
phi = phi-fac*del6
delip = (qip-qi)*mski
recip_delip = sign(1.d0,delip)/max(abs(delip),eps)
phi = phi*recip_delip
deli = (qi-qim)*mskim
recip_deli = sign(1.d0,deli)/max(abs(deli),eps)
rp1h = deli*recip_delip
rp1h_cfl = rp1h/(cfl+eps)
d2 = del2
d2p1 = del2p
d2m1 = del2m
a = 4.d0*d2-d2p1
b = 4.d0*d2p1-d2
c = d2
d = d2p1
dp1h = max(min(a,b,c,d),0.d0)+min(max(a,b,c,d),0.d0)
a = 4.d0*d2m1-d2
b = 4.d0*d2-d2m1
c = d2m1
d = d2
dm1h = max(min(a,b,c,d),0.d0)+min(max(a,b,c,d),0.d0)
phimd = 1.d0/(1.d0-cfl)*(delip-dp1h)*recip_delip
philc = rp1h_cfl*(1.d0+dm1h*recip_deli)
phimin = max(min(0.d0,phimd),min(0.d0,2.d0*rp1h_cfl,philc))
phimax = min(max(2.d0/(1.d0-cfl),phimd),max(0.d0,2.d0*
$rp1h_cfl,philc))
phi = max(phimin,min(phi,phimax))
psi = phi*0.5d0*(1.d0-cfl)
addelip = addelip+adwt(i,j)*wtrans(i,j)*psi
adpsi = adpsi+adwt(i,j)*wtrans(i,j)*delip
adqi = adqi+adwt(i,j)*wtrans(i,j)
adwtrans(i,j) = adwtrans(i,j)+adwt(i,j)*(qi+psi*delip)
adwt(i,j) = 0.d0
adcfl = adcfl-0.5d0*adpsi*phi
adphi = adphi+0.5d0*adpsi*(1.d0-cfl)
adpsi = 0.d0
fac = 1.d0
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
phi = phi-fac*del6
phi = phi*recip_delip
phih = min(phi,phimax)
adphih = adphi*(0.5-sign(0.5d0,phimin-phih))
adphimin = adphimin+adphi*(0.5+sign(0.5d0,phimin-phih))
adphi = adphih*(0.5+sign(0.5d0,phimax-phi))
adphimax = adphimax+adphih*(0.5-sign(0.5d0,phimax-phi))
phimaxh = max(2.d0/(1.d0-cfl),phimd)
phimaxi = 2.d0*rp1h_cfl
phimaxj = max(0.d0,phimaxi)
phimaxk = max(phimaxj,philc)
adphimaxh = adphimax*(0.5+sign(0.5d0,phimaxk-phimaxh))
adphimaxk = adphimax*(0.5-sign(0.5d0,phimaxk-phimaxh))
adphilc = adphilc+adphimaxk*(0.5-sign(0.5d0,phimaxj-philc))
adrp1h_cfl = adrp1h_cfl+2*adphimaxk*(0.5+sign(0.5d0,phimaxj-
$philc))*(0.5-sign(0.5d0,0.d0-phimaxi))
adcfl = adcfl-adphimaxh*(0.5+sign(0.5d0,2.d0/(1.d0-cfl)-
$phimd))*((-2)/((1.d0-cfl)*(1.d0-cfl)))
adphimd = adphimd+adphimaxh*(0.5-sign(0.5d0,2.d0/(1.d0-cfl)-
$phimd))
adphimax = 0.d0
phiminh = min(0.d0,phimd)
phimini = 2.d0*rp1h_cfl
phiminj = min(0.d0,phimini)
phimink = min(phiminj,philc)
adphimink = adphimin*(0.5-sign(0.5d0,phiminh-phimink))
adphilc = adphilc+adphimink*(0.5-sign(0.5d0,philc-phiminj))
adrp1h_cfl = adrp1h_cfl+2*adphimink*(0.5+sign(0.5d0,philc-
$phiminj))*(0.5-sign(0.5d0,phimini-0.d0))
adphimd = adphimd+adphimin*(0.5+sign(0.5d0,phiminh-phimink))
$*(0.5-sign(0.5d0,phimd-0.d0))
adphimin = 0.d0
addm1h = addm1h+adphilc*rp1h_cfl*recip_deli
adrecip_deli = adrecip_deli+adphilc*rp1h_cfl*dm1h
adrp1h_cfl = adrp1h_cfl+adphilc*(1+dm1h*recip_deli)
adphilc = 0.d0
adcfl = adcfl-(-(adphimd/((1.d0-cfl)*(1.d0-cfl))))*(delip-
$dp1h)*recip_delip
addelip = addelip+adphimd*1.d0/(1.d0-cfl)*recip_delip
addp1h = addp1h-adphimd*1.d0/(1.d0-cfl)*recip_delip
adrecip_delip = adrecip_delip+adphimd*1.d0/(1.d0-cfl)*(
$delip-dp1h)
adphimd = 0.d0
dm1hi = max(a,b)
dm1hj = max(dm1hi,c)
dm1hm = min(a,b)
dm1hn = min(dm1hm,c)
addm1ho = addm1h*(0.5+sign(0.5d0,min(dm1hn,d)-0.d0))
add = add+addm1ho*(0.5-sign(0.5d0,d-dm1hn))
addm1hn = addm1ho*(0.5+sign(0.5d0,d-dm1hn))
adc = adc+addm1hn*(0.5-sign(0.5d0,c-dm1hm))
addm1hm = addm1hn*(0.5+sign(0.5d0,c-dm1hm))
ada = ada+addm1hm*(0.5+sign(0.5d0,b-a))
adb = adb+addm1hm*(0.5-sign(0.5d0,b-a))
addm1hk = addm1h*(0.5+sign(0.5d0,0.d0-max(dm1hj,d)))
add = add+addm1hk*(0.5-sign(0.5d0,dm1hj-d))
addm1hj = addm1hk*(0.5+sign(0.5d0,dm1hj-d))
adc = adc+addm1hj*(0.5-sign(0.5d0,dm1hi-c))
addm1hi = addm1hj*(0.5+sign(0.5d0,dm1hi-c))
ada = ada+addm1hi*(0.5+sign(0.5d0,a-b))
adb = adb+addm1hi*(0.5-sign(0.5d0,a-b))
addm1h = 0.d0
add2 = add2+add
add = 0.d0
add2m1 = add2m1+adc
adc = 0.d0
add2 = add2+4*adb
add2m1 = add2m1-adb
adb = 0.d0
add2 = add2-ada
add2m1 = add2m1+4*ada
ada = 0.d0
a = 4.d0*d2-d2p1
b = 4.d0*d2p1-d2
c = d2
d = d2p1
dp1hi = max(a,b)
dp1hj = max(dp1hi,c)
dp1hm = min(a,b)
dp1hn = min(dp1hm,c)
addp1ho = addp1h*(0.5+sign(0.5d0,min(dp1hn,d)-0.d0))
add = add+addp1ho*(0.5-sign(0.5d0,d-dp1hn))
addp1hn = addp1ho*(0.5+sign(0.5d0,d-dp1hn))
adc = adc+addp1hn*(0.5-sign(0.5d0,c-dp1hm))
addp1hm = addp1hn*(0.5+sign(0.5d0,c-dp1hm))
ada = ada+addp1hm*(0.5+sign(0.5d0,b-a))
adb = adb+addp1hm*(0.5-sign(0.5d0,b-a))
addp1hk = addp1h*(0.5+sign(0.5d0,0.d0-max(dp1hj,d)))
add = add+addp1hk*(0.5-sign(0.5d0,dp1hj-d))
addp1hj = addp1hk*(0.5+sign(0.5d0,dp1hj-d))
adc = adc+addp1hj*(0.5-sign(0.5d0,dp1hi-c))
addp1hi = addp1hj*(0.5+sign(0.5d0,dp1hi-c))
ada = ada+addp1hi*(0.5+sign(0.5d0,a-b))
adb = adb+addp1hi*(0.5-sign(0.5d0,a-b))
addp1h = 0.d0
add2p1 = add2p1+add
add = 0.d0
add2 = add2+adc
adc = 0.d0
add2 = add2-adb
add2p1 = add2p1+4*adb
adb = 0.d0
add2 = add2+4*ada
add2p1 = add2p1-ada
ada = 0.d0
addel2m = addel2m+add2m1
add2m1 = 0.d0
addel2p = addel2p+add2p1
add2p1 = 0.d0
addel2 = addel2+add2
add2 = 0.d0
adcfl = adcfl-adrp1h_cfl*(rp1h/((cfl+eps)*(cfl+eps)))
adrp1h = adrp1h+adrp1h_cfl/(cfl+eps)
adrp1h_cfl = 0.d0
addeli = addeli+adrp1h*recip_delip
adrecip_delip = adrecip_delip+adrp1h*deli
adrp1h = 0.d0
recip_delii = abs(deli)
recip_delih = max(recip_delii,eps)
adrecip_delii = -(adrecip_deli*sign(1.d0,deli)/(recip_delih*
$recip_delih)*(0.5+sign(0.5d0,recip_delii-eps)))
addeli = addeli+adrecip_delii*sign(1.d0,deli)
adrecip_deli = 0.d0
adqi = adqi+addeli*mskim
adqim = adqim-addeli*mskim
addeli = 0.d0
fac = 1.d0
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
phi = phi-fac*del6
adrecip_delip = adrecip_delip+adphi*phi
adphi = adphi*recip_delip
recip_delipi = abs(delip)
recip_deliph = max(recip_delipi,eps)
adrecip_delipi = -(adrecip_delip*sign(1.d0,delip)/(
$recip_deliph*recip_deliph)*(0.5+sign(0.5d0,recip_delipi-eps)))
addelip = addelip+adrecip_delipi*sign(1.d0,delip)
adrecip_delip = 0.d0
adqi = adqi-addelip*mski
adqip = adqip+addelip*mski
addelip = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
fac = fac*(cfl+2.d0)/7.d0
addel6 = addel6-adphi*fac
adfac = adfac-adphi*del6
addel5m = addel5m-addel6
addel5p = addel5p+addel6
addel6 = 0.d0
addel4 = addel4+addel5m
addel4m = addel4m-addel5m
addel5m = 0.d0
addel3m = addel3m+addel4m
addel3mm = addel3mm-addel4m
addel4m = 0.d0
addel2m = addel2m+addel3mm
addel2mm = addel2mm-addel3mm
addel3mm = 0.d0
addelmm = addelmm+addel2mm
addelmmm = addelmmm-addel2mm
addel2mm = 0.d0
adqimm = adqimm+addelmmm*mskimmm*mskimm*mskim
adqimmm = adqimmm-addelmmm*mskimmm*mskimm*mskim
addelmmm = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
adcfl = adcfl+adfac*(fac/7.d0)
adfac = adfac*((2+cfl)/7.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
addel5p = addel5p+adphi*fac
adfac = adfac+adphi*del5p
addel4 = addel4-addel5p
addel4p = addel4p+addel5p
addel5p = 0.d0
addel3p = addel3p-addel4p
addel3pp = addel3pp+addel4p
addel4p = 0.d0
addel2p = addel2p-addel3pp
addel2pp = addel2pp+addel3pp
addel3pp = 0.d0
addelp = addelp-addel2pp
addelpp = addelpp+addel2pp
addel2pp = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
adcfl = adcfl+adfac*(fac/6.d0)
adfac = adfac*((2+cfl)/6.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
addel4 = addel4+adphi*fac
adfac = adfac+adphi*del4
addel3m = addel3m-addel4
addel3p = addel3p+addel4
addel4 = 0.d0
addel2 = addel2+addel3m
addel2m = addel2m-addel3m
addel3m = 0.d0
addelm = addelm+addel2m
addelmm = addelmm-addel2m
addel2m = 0.d0
adqim = adqim+addelmm*mskimm*mskim
adqimm = adqimm-addelmm*mskimm*mskim
addelmm = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
adcfl = adcfl+adfac*(fac/5.d0)
adfac = adfac*(((-3)+cfl)/5.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
addel3p = addel3p+adphi*fac
adfac = adfac+adphi*del3p
addel2 = addel2-addel3p
addel2p = addel2p+addel3p
addel3p = 0.d0
addelp = addelp-addel2p
addelpp = addelpp+addel2p
addel2p = 0.d0
adqip = adqip-addelpp*mskip*mski
adqipp = adqipp+addelpp*mskip*mski
addelpp = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
adcfl = adcfl+adfac*(fac/4.d0)
adfac = adfac*(((-2)+cfl)/4.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
addel2 = addel2-adphi*fac
adfac = adfac-adphi*del2
addelm = addelm-addel2
addelp = addelp+addel2
addel2 = 0.d0
adqi = adqi+addelm*mskim
adqim = adqim-addelm*mskim
addelm = 0.d0
fac = 1.d0
adcfl = adcfl+adfac*(fac/3.d0)
adfac = adfac*((1+cfl)/3.d0)
fac = 1.d0
addelp = addelp+adphi*fac
adfac = adfac+adphi*delp
adphi = 0.d0
adqi = adqi-addelp*mski
adqip = adqip+addelp*mski
addelp = 0.d0
adfac = 0.d0
else
adwt(i,j) = 0.d0
endif
if (wtrans(i,j) .lt. 0.d0) then
adq(i,j,km4) = adq(i,j,km4)+adqimmm
adqimmm = 0.d0
adq(i,j,km3) = adq(i,j,km3)+adqimm
adqimm = 0.d0
adq(i,j,km2) = adq(i,j,km2)+adqim
adqim = 0.d0
adq(i,j,km1) = adq(i,j,km1)+adqi
adqi = 0.d0
adq(i,j,k) = adq(i,j,k)+adqip
adqip = 0.d0
adq(i,j,kp1) = adq(i,j,kp1)+adqipp
adqipp = 0.d0
else if (wtrans(i,j) .gt. 0.d0) then
adq(i,j,kp3) = adq(i,j,kp3)+adqimmm
adqimmm = 0.d0
adq(i,j,kp2) = adq(i,j,kp2)+adqimm
adqimm = 0.d0
adq(i,j,kp1) = adq(i,j,kp1)+adqim
adqim = 0.d0
adq(i,j,k) = adq(i,j,k)+adqi
adqi = 0.d0
adq(i,j,km1) = adq(i,j,km1)+adqip
adqip = 0.d0
adq(i,j,km2) = adq(i,j,km2)+adqipp
adqipp = 0.d0
else
adqimmm = 0.d0
adqimm = 0.d0
adqim = 0.d0
adqi = 0.d0
adqip = 0.d0
adqipp = 0.d0
endif
adwloc = adwloc+adcfl*deltatloc*recip_drc(k)*sign(1.d0,wloc*
$deltatloc*recip_drc(k))
adcfl = 0.d0
adwfld(i,j) = adwfld(i,j)+adwloc
adwloc = 0.d0
end do
end do
end
subroutine adgad_os7mp_adv_x( bi, bj, calccfl, deltatloc, utrans,
$adutrans, ufld, adufld, masklocw, q, adq, adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adq(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
double precision masklocw(1-olx:snx+olx,1-oly:sny+oly)
double precision q(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision a
double precision ada
double precision adb
double precision adc
double precision adcfl
double precision add
double precision add2
double precision add2m1
double precision add2p1
double precision addel2
double precision addel2m
double precision addel2mm
double precision addel2p
double precision addel2pp
double precision addel3m
double precision addel3mm
double precision addel3p
double precision addel3pp
double precision addel4
double precision addel4m
double precision addel4p
double precision addel5m
double precision addel5p
double precision addel6
double precision addeli
double precision addelip
double precision addelm
double precision addelmm
double precision addelmmm
double precision addelp
double precision addelpp
double precision addm1h
double precision addm1hi
double precision addm1hj
double precision addm1hk
double precision addm1hm
double precision addm1hn
double precision addm1ho
double precision addp1h
double precision addp1hi
double precision addp1hj
double precision addp1hk
double precision addp1hm
double precision addp1hn
double precision addp1ho
double precision adfac
double precision adphi
double precision adphih
double precision adphilc
double precision adphimax
double precision adphimaxh
double precision adphimaxk
double precision adphimd
double precision adphimin
double precision adphimink
double precision adpsi
double precision adqi
double precision adqim
double precision adqimm
double precision adqimmm
double precision adqip
double precision adqipp
double precision adrecip_deli
double precision adrecip_delii
double precision adrecip_delip
double precision adrecip_delipi
double precision adrp1h
double precision adrp1h_cfl
double precision aduloc
double precision b
double precision c
double precision cfl
double precision d
double precision d2
double precision d2m1
double precision d2p1
double precision del2
double precision del2m
double precision del2mm
double precision del2p
double precision del2pp
double precision del3m
double precision del3mm
double precision del3p
double precision del3pp
double precision del4
double precision del4m
double precision del4p
double precision del5m
double precision del5p
double precision del6
double precision deli
double precision delip
double precision delm
double precision delmm
double precision delmmm
double precision delp
double precision delpp
double precision dm1h
double precision dm1hi
double precision dm1hj
double precision dm1hm
double precision dm1hn
double precision dp1h
double precision dp1hi
double precision dp1hj
double precision dp1hm
double precision dp1hn
double precision eps
double precision fac
integer i
integer j
double precision mski
double precision mskim
double precision mskimm
double precision mskimmm
double precision mskip
double precision phi
double precision phih
double precision philc
double precision phimax
double precision phimaxh
double precision phimaxi
double precision phimaxj
double precision phimaxk
double precision phimd
double precision phimin
double precision phiminh
double precision phimini
double precision phiminj
double precision phimink
double precision psi
double precision qi
double precision qim
double precision qimm
double precision qimmm
double precision qip
double precision qipp
double precision recip_deli
double precision recip_delih
double precision recip_delii
double precision recip_delip
double precision recip_deliph
double precision recip_delipi
double precision rp1h
double precision rp1h_cfl
double precision uloc
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
ada = 0.d0
adb = 0.d0
adc = 0.d0
adcfl = 0.d0
add = 0.d0
add2 = 0.d0
add2m1 = 0.d0
add2p1 = 0.d0
addel2 = 0.d0
addel2m = 0.d0
addel2mm = 0.d0
addel2p = 0.d0
addel2pp = 0.d0
addel3m = 0.d0
addel3mm = 0.d0
addel3p = 0.d0
addel3pp = 0.d0
addel4 = 0.d0
addel4m = 0.d0
addel4p = 0.d0
addel5m = 0.d0
addel5p = 0.d0
addel6 = 0.d0
addeli = 0.d0
addelip = 0.d0
addelm = 0.d0
addelmm = 0.d0
addelmmm = 0.d0
addelp = 0.d0
addelpp = 0.d0
addm1h = 0.d0
addp1h = 0.d0
adfac = 0.d0
adphi = 0.d0
adphilc = 0.d0
adphimax = 0.d0
adphimd = 0.d0
adphimin = 0.d0
adpsi = 0.d0
adqi = 0.d0
adqim = 0.d0
adqimm = 0.d0
adqimmm = 0.d0
adqip = 0.d0
adqipp = 0.d0
adrecip_deli = 0.d0
adrecip_delip = 0.d0
adrp1h = 0.d0
adrp1h_cfl = 0.d0
aduloc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
eps = 9.9999999999999d-21
do j = sny+oly, 1-oly, -1
do i = snx+olx-3, 1-olx+4, -1
uloc = ufld(i,j)
cfl = uloc
if (calccfl) then
cfl = abs(uloc*deltatloc*recip_dxc(i,j,bi,bj))
endif
if (utrans(i,j) .gt. 0.d0) then
qipp = q(i+1,j)
qip = q(i,j)
qi = q(i-1,j)
qim = q(i-2,j)
qimm = q(i-3,j)
qimmm = q(i-4,j)
mskip = masklocw(i+1,j)
mski = masklocw(i,j)
mskim = masklocw(i-1,j)
mskimm = masklocw(i-2,j)
mskimmm = masklocw(i-3,j)
else if (utrans(i,j) .lt. 0.d0) then
qipp = q(i-2,j)
qip = q(i-1,j)
qi = q(i,j)
qim = q(i+1,j)
qimm = q(i+2,j)
qimmm = q(i+3,j)
mskip = masklocw(i-1,j)
mski = masklocw(i,j)
mskim = masklocw(i+1,j)
mskimm = masklocw(i+2,j)
mskimmm = masklocw(i+3,j)
else
qipp = 0.d0
qip = 0.d0
qi = 0.d0
qim = 0.d0
qimm = 0.d0
qimmm = 0.d0
mskip = 0.d0
mski = 0.d0
mskim = 0.d0
mskimm = 0.d0
mskimmm = 0.d0
endif
if (utrans(i,j) .ne. 0.d0) then
fac = 1.d0
delp = (qip-qi)*mski
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
delm = (qi-qim)*mskim
del2 = delp-delm
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
delpp = (qipp-qip)*mskip*mski
del2p = delpp-delp
del3p = del2p-del2
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
delmm = (qim-qimm)*mskimm*mskim
del2m = delm-delmm
del3m = del2-del2m
del4 = del3p-del3m
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
del2pp = delpp-delp
del3pp = del2pp-del2p
del4p = del3pp-del3p
del5p = del4p-del4
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
delmmm = (qimm-qimmm)*mskimmm*mskimm*mskim
del2mm = delmm-delmmm
del3mm = del2m-del2mm
del4m = del3m-del3mm
del5m = del4-del4m
del6 = del5p-del5m
phi = phi-fac*del6
delip = (qip-qi)*mski
recip_delip = sign(1.d0,delip)/max(abs(delip),eps)
phi = phi*recip_delip
deli = (qi-qim)*mskim
recip_deli = sign(1.d0,deli)/max(abs(deli),eps)
rp1h = deli*recip_delip
rp1h_cfl = rp1h/(cfl+eps)
d2 = del2
d2p1 = del2p
d2m1 = del2m
a = 4.d0*d2-d2p1
b = 4.d0*d2p1-d2
c = d2
d = d2p1
dp1h = max(min(a,b,c,d),0.d0)+min(max(a,b,c,d),0.d0)
a = 4.d0*d2m1-d2
b = 4.d0*d2-d2m1
c = d2m1
d = d2
dm1h = max(min(a,b,c,d),0.d0)+min(max(a,b,c,d),0.d0)
phimd = 1.d0/(1.d0-cfl)*(delip-dp1h)*recip_delip
philc = rp1h_cfl*(1.d0+dm1h*recip_deli)
phimin = max(min(0.d0,phimd),min(0.d0,2.d0*rp1h_cfl,philc))
phimax = min(max(2.d0/(1.d0-cfl),phimd),max(0.d0,2.d0*
$rp1h_cfl,philc))
phi = max(phimin,min(phi,phimax))
psi = phi*0.5d0*(1.d0-cfl)
addelip = addelip+adut(i,j)*utrans(i,j)*psi
adpsi = adpsi+adut(i,j)*utrans(i,j)*delip
adqi = adqi+adut(i,j)*utrans(i,j)
adutrans(i,j) = adutrans(i,j)+adut(i,j)*(qi+psi*delip)
adut(i,j) = 0.d0
adcfl = adcfl-0.5d0*adpsi*phi
adphi = adphi+0.5d0*adpsi*(1.d0-cfl)
adpsi = 0.d0
fac = 1.d0
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
phi = phi-fac*del6
phi = phi*recip_delip
phih = min(phi,phimax)
adphih = adphi*(0.5-sign(0.5d0,phimin-phih))
adphimin = adphimin+adphi*(0.5+sign(0.5d0,phimin-phih))
adphi = adphih*(0.5+sign(0.5d0,phimax-phi))
adphimax = adphimax+adphih*(0.5-sign(0.5d0,phimax-phi))
phimaxh = max(2.d0/(1.d0-cfl),phimd)
phimaxi = 2.d0*rp1h_cfl
phimaxj = max(0.d0,phimaxi)
phimaxk = max(phimaxj,philc)
adphimaxh = adphimax*(0.5+sign(0.5d0,phimaxk-phimaxh))
adphimaxk = adphimax*(0.5-sign(0.5d0,phimaxk-phimaxh))
adphilc = adphilc+adphimaxk*(0.5-sign(0.5d0,phimaxj-philc))
adrp1h_cfl = adrp1h_cfl+2*adphimaxk*(0.5+sign(0.5d0,phimaxj-
$philc))*(0.5-sign(0.5d0,0.d0-phimaxi))
adcfl = adcfl-adphimaxh*(0.5+sign(0.5d0,2.d0/(1.d0-cfl)-
$phimd))*((-2)/((1.d0-cfl)*(1.d0-cfl)))
adphimd = adphimd+adphimaxh*(0.5-sign(0.5d0,2.d0/(1.d0-cfl)-
$phimd))
adphimax = 0.d0
phiminh = min(0.d0,phimd)
phimini = 2.d0*rp1h_cfl
phiminj = min(0.d0,phimini)
phimink = min(phiminj,philc)
adphimink = adphimin*(0.5-sign(0.5d0,phiminh-phimink))
adphilc = adphilc+adphimink*(0.5-sign(0.5d0,philc-phiminj))
adrp1h_cfl = adrp1h_cfl+2*adphimink*(0.5+sign(0.5d0,philc-
$phiminj))*(0.5-sign(0.5d0,phimini-0.d0))
adphimd = adphimd+adphimin*(0.5+sign(0.5d0,phiminh-phimink))
$*(0.5-sign(0.5d0,phimd-0.d0))
adphimin = 0.d0
addm1h = addm1h+adphilc*rp1h_cfl*recip_deli
adrecip_deli = adrecip_deli+adphilc*rp1h_cfl*dm1h
adrp1h_cfl = adrp1h_cfl+adphilc*(1+dm1h*recip_deli)
adphilc = 0.d0
adcfl = adcfl-(-(adphimd/((1.d0-cfl)*(1.d0-cfl))))*(delip-
$dp1h)*recip_delip
addelip = addelip+adphimd*1.d0/(1.d0-cfl)*recip_delip
addp1h = addp1h-adphimd*1.d0/(1.d0-cfl)*recip_delip
adrecip_delip = adrecip_delip+adphimd*1.d0/(1.d0-cfl)*(
$delip-dp1h)
adphimd = 0.d0
dm1hi = max(a,b)
dm1hj = max(dm1hi,c)
dm1hm = min(a,b)
dm1hn = min(dm1hm,c)
addm1ho = addm1h*(0.5+sign(0.5d0,min(dm1hn,d)-0.d0))
add = add+addm1ho*(0.5-sign(0.5d0,d-dm1hn))
addm1hn = addm1ho*(0.5+sign(0.5d0,d-dm1hn))
adc = adc+addm1hn*(0.5-sign(0.5d0,c-dm1hm))
addm1hm = addm1hn*(0.5+sign(0.5d0,c-dm1hm))
ada = ada+addm1hm*(0.5+sign(0.5d0,b-a))
adb = adb+addm1hm*(0.5-sign(0.5d0,b-a))
addm1hk = addm1h*(0.5+sign(0.5d0,0.d0-max(dm1hj,d)))
add = add+addm1hk*(0.5-sign(0.5d0,dm1hj-d))
addm1hj = addm1hk*(0.5+sign(0.5d0,dm1hj-d))
adc = adc+addm1hj*(0.5-sign(0.5d0,dm1hi-c))
addm1hi = addm1hj*(0.5+sign(0.5d0,dm1hi-c))
ada = ada+addm1hi*(0.5+sign(0.5d0,a-b))
adb = adb+addm1hi*(0.5-sign(0.5d0,a-b))
addm1h = 0.d0
add2 = add2+add
add = 0.d0
add2m1 = add2m1+adc
adc = 0.d0
add2 = add2+4*adb
add2m1 = add2m1-adb
adb = 0.d0
add2 = add2-ada
add2m1 = add2m1+4*ada
ada = 0.d0
a = 4.d0*d2-d2p1
b = 4.d0*d2p1-d2
c = d2
d = d2p1
dp1hi = max(a,b)
dp1hj = max(dp1hi,c)
dp1hm = min(a,b)
dp1hn = min(dp1hm,c)
addp1ho = addp1h*(0.5+sign(0.5d0,min(dp1hn,d)-0.d0))
add = add+addp1ho*(0.5-sign(0.5d0,d-dp1hn))
addp1hn = addp1ho*(0.5+sign(0.5d0,d-dp1hn))
adc = adc+addp1hn*(0.5-sign(0.5d0,c-dp1hm))
addp1hm = addp1hn*(0.5+sign(0.5d0,c-dp1hm))
ada = ada+addp1hm*(0.5+sign(0.5d0,b-a))
adb = adb+addp1hm*(0.5-sign(0.5d0,b-a))
addp1hk = addp1h*(0.5+sign(0.5d0,0.d0-max(dp1hj,d)))
add = add+addp1hk*(0.5-sign(0.5d0,dp1hj-d))
addp1hj = addp1hk*(0.5+sign(0.5d0,dp1hj-d))
adc = adc+addp1hj*(0.5-sign(0.5d0,dp1hi-c))
addp1hi = addp1hj*(0.5+sign(0.5d0,dp1hi-c))
ada = ada+addp1hi*(0.5+sign(0.5d0,a-b))
adb = adb+addp1hi*(0.5-sign(0.5d0,a-b))
addp1h = 0.d0
add2p1 = add2p1+add
add = 0.d0
add2 = add2+adc
adc = 0.d0
add2 = add2-adb
add2p1 = add2p1+4*adb
adb = 0.d0
add2 = add2+4*ada
add2p1 = add2p1-ada
ada = 0.d0
addel2m = addel2m+add2m1
add2m1 = 0.d0
addel2p = addel2p+add2p1
add2p1 = 0.d0
addel2 = addel2+add2
add2 = 0.d0
adcfl = adcfl-adrp1h_cfl*(rp1h/((cfl+eps)*(cfl+eps)))
adrp1h = adrp1h+adrp1h_cfl/(cfl+eps)
adrp1h_cfl = 0.d0
addeli = addeli+adrp1h*recip_delip
adrecip_delip = adrecip_delip+adrp1h*deli
adrp1h = 0.d0
recip_delii = abs(deli)
recip_delih = max(recip_delii,eps)
adrecip_delii = -(adrecip_deli*sign(1.d0,deli)/(recip_delih*
$recip_delih)*(0.5+sign(0.5d0,recip_delii-eps)))
addeli = addeli+adrecip_delii*sign(1.d0,deli)
adrecip_deli = 0.d0
adqi = adqi+addeli*mskim
adqim = adqim-addeli*mskim
addeli = 0.d0
fac = 1.d0
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
phi = phi-fac*del6
adrecip_delip = adrecip_delip+adphi*phi
adphi = adphi*recip_delip
recip_delipi = abs(delip)
recip_deliph = max(recip_delipi,eps)
adrecip_delipi = -(adrecip_delip*sign(1.d0,delip)/(
$recip_deliph*recip_deliph)*(0.5+sign(0.5d0,recip_delipi-eps)))
addelip = addelip+adrecip_delipi*sign(1.d0,delip)
adrecip_delip = 0.d0
adqi = adqi-addelip*mski
adqip = adqip+addelip*mski
addelip = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
fac = fac*(cfl+2.d0)/7.d0
addel6 = addel6-adphi*fac
adfac = adfac-adphi*del6
addel5m = addel5m-addel6
addel5p = addel5p+addel6
addel6 = 0.d0
addel4 = addel4+addel5m
addel4m = addel4m-addel5m
addel5m = 0.d0
addel3m = addel3m+addel4m
addel3mm = addel3mm-addel4m
addel4m = 0.d0
addel2m = addel2m+addel3mm
addel2mm = addel2mm-addel3mm
addel3mm = 0.d0
addelmm = addelmm+addel2mm
addelmmm = addelmmm-addel2mm
addel2mm = 0.d0
adqimm = adqimm+addelmmm*mskimmm*mskimm*mskim
adqimmm = adqimmm-addelmmm*mskimmm*mskimm*mskim
addelmmm = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
adcfl = adcfl+adfac*(fac/7.d0)
adfac = adfac*((2+cfl)/7.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
addel5p = addel5p+adphi*fac
adfac = adfac+adphi*del5p
addel4 = addel4-addel5p
addel4p = addel4p+addel5p
addel5p = 0.d0
addel3p = addel3p-addel4p
addel3pp = addel3pp+addel4p
addel4p = 0.d0
addel2p = addel2p-addel3pp
addel2pp = addel2pp+addel3pp
addel3pp = 0.d0
addelp = addelp-addel2pp
addelpp = addelpp+addel2pp
addel2pp = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
adcfl = adcfl+adfac*(fac/6.d0)
adfac = adfac*((2+cfl)/6.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
addel4 = addel4+adphi*fac
adfac = adfac+adphi*del4
addel3m = addel3m-addel4
addel3p = addel3p+addel4
addel4 = 0.d0
addel2 = addel2+addel3m
addel2m = addel2m-addel3m
addel3m = 0.d0
addelm = addelm+addel2m
addelmm = addelmm-addel2m
addel2m = 0.d0
adqim = adqim+addelmm*mskimm*mskim
adqimm = adqimm-addelmm*mskimm*mskim
addelmm = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
adcfl = adcfl+adfac*(fac/5.d0)
adfac = adfac*(((-3)+cfl)/5.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
addel3p = addel3p+adphi*fac
adfac = adfac+adphi*del3p
addel2 = addel2-addel3p
addel2p = addel2p+addel3p
addel3p = 0.d0
addelp = addelp-addel2p
addelpp = addelpp+addel2p
addel2p = 0.d0
adqip = adqip-addelpp*mskip*mski
adqipp = adqipp+addelpp*mskip*mski
addelpp = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
adcfl = adcfl+adfac*(fac/4.d0)
adfac = adfac*(((-2)+cfl)/4.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
addel2 = addel2-adphi*fac
adfac = adfac-adphi*del2
addelm = addelm-addel2
addelp = addelp+addel2
addel2 = 0.d0
adqi = adqi+addelm*mskim
adqim = adqim-addelm*mskim
addelm = 0.d0
fac = 1.d0
adcfl = adcfl+adfac*(fac/3.d0)
adfac = adfac*((1+cfl)/3.d0)
fac = 1.d0
addelp = addelp+adphi*fac
adfac = adfac+adphi*delp
adphi = 0.d0
adqi = adqi-addelp*mski
adqip = adqip+addelp*mski
addelp = 0.d0
adfac = 0.d0
else
adut(i,j) = 0.d0
endif
if (utrans(i,j) .gt. 0.d0) then
adq(i-4,j) = adq(i-4,j)+adqimmm
adqimmm = 0.d0
adq(i-3,j) = adq(i-3,j)+adqimm
adqimm = 0.d0
adq(i-2,j) = adq(i-2,j)+adqim
adqim = 0.d0
adq(i-1,j) = adq(i-1,j)+adqi
adqi = 0.d0
adq(i,j) = adq(i,j)+adqip
adqip = 0.d0
adq(i+1,j) = adq(i+1,j)+adqipp
adqipp = 0.d0
else if (utrans(i,j) .lt. 0.d0) then
adq(i+3,j) = adq(i+3,j)+adqimmm
adqimmm = 0.d0
adq(i+2,j) = adq(i+2,j)+adqimm
adqimm = 0.d0
adq(i+1,j) = adq(i+1,j)+adqim
adqim = 0.d0
adq(i,j) = adq(i,j)+adqi
adqi = 0.d0
adq(i-1,j) = adq(i-1,j)+adqip
adqip = 0.d0
adq(i-2,j) = adq(i-2,j)+adqipp
adqipp = 0.d0
else
adqimmm = 0.d0
adqimm = 0.d0
adqim = 0.d0
adqi = 0.d0
adqip = 0.d0
adqipp = 0.d0
endif
if (calccfl) then
aduloc = aduloc+adcfl*deltatloc*recip_dxc(i,j,bi,bj)*sign(
$1.d0,uloc*deltatloc*recip_dxc(i,j,bi,bj))
adcfl = 0.d0
endif
aduloc = aduloc+adcfl
adcfl = 0.d0
adufld(i,j) = adufld(i,j)+aduloc
aduloc = 0.d0
end do
end do
end
subroutine adgad_os7mp_adv_y( bi, bj, calccfl, deltatloc, vtrans,
$advtrans, vfld, advfld, masklocs, q, adq, advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adq(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical calccfl
double precision deltatloc
double precision masklocs(1-olx:snx+olx,1-oly:sny+oly)
double precision q(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision a
double precision ada
double precision adb
double precision adc
double precision adcfl
double precision add
double precision add2
double precision add2m1
double precision add2p1
double precision addel2
double precision addel2m
double precision addel2mm
double precision addel2p
double precision addel2pp
double precision addel3m
double precision addel3mm
double precision addel3p
double precision addel3pp
double precision addel4
double precision addel4m
double precision addel4p
double precision addel5m
double precision addel5p
double precision addel6
double precision addeli
double precision addelip
double precision addelm
double precision addelmm
double precision addelmmm
double precision addelp
double precision addelpp
double precision addm1h
double precision addm1hi
double precision addm1hj
double precision addm1hk
double precision addm1hm
double precision addm1hn
double precision addm1ho
double precision addp1h
double precision addp1hi
double precision addp1hj
double precision addp1hk
double precision addp1hm
double precision addp1hn
double precision addp1ho
double precision adfac
double precision adphi
double precision adphih
double precision adphilc
double precision adphimax
double precision adphimaxh
double precision adphimaxk
double precision adphimd
double precision adphimin
double precision adphimink
double precision adpsi
double precision adqi
double precision adqim
double precision adqimm
double precision adqimmm
double precision adqip
double precision adqipp
double precision adrecip_deli
double precision adrecip_delii
double precision adrecip_delip
double precision adrecip_delipi
double precision adrp1h
double precision adrp1h_cfl
double precision advloc
double precision b
double precision c
double precision cfl
double precision d
double precision d2
double precision d2m1
double precision d2p1
double precision del2
double precision del2m
double precision del2mm
double precision del2p
double precision del2pp
double precision del3m
double precision del3mm
double precision del3p
double precision del3pp
double precision del4
double precision del4m
double precision del4p
double precision del5m
double precision del5p
double precision del6
double precision deli
double precision delip
double precision delm
double precision delmm
double precision delmmm
double precision delp
double precision delpp
double precision dm1h
double precision dm1hi
double precision dm1hj
double precision dm1hm
double precision dm1hn
double precision dp1h
double precision dp1hi
double precision dp1hj
double precision dp1hm
double precision dp1hn
double precision eps
double precision fac
integer i
integer j
double precision mski
double precision mskim
double precision mskimm
double precision mskimmm
double precision mskip
double precision phi
double precision phih
double precision philc
double precision phimax
double precision phimaxh
double precision phimaxi
double precision phimaxj
double precision phimaxk
double precision phimd
double precision phimin
double precision phiminh
double precision phimini
double precision phiminj
double precision phimink
double precision psi
double precision qi
double precision qim
double precision qimm
double precision qimmm
double precision qip
double precision qipp
double precision recip_deli
double precision recip_delih
double precision recip_delii
double precision recip_delip
double precision recip_deliph
double precision recip_delipi
double precision rp1h
double precision rp1h_cfl
double precision vloc
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
ada = 0.d0
adb = 0.d0
adc = 0.d0
adcfl = 0.d0
add = 0.d0
add2 = 0.d0
add2m1 = 0.d0
add2p1 = 0.d0
addel2 = 0.d0
addel2m = 0.d0
addel2mm = 0.d0
addel2p = 0.d0
addel2pp = 0.d0
addel3m = 0.d0
addel3mm = 0.d0
addel3p = 0.d0
addel3pp = 0.d0
addel4 = 0.d0
addel4m = 0.d0
addel4p = 0.d0
addel5m = 0.d0
addel5p = 0.d0
addel6 = 0.d0
addeli = 0.d0
addelip = 0.d0
addelm = 0.d0
addelmm = 0.d0
addelmmm = 0.d0
addelp = 0.d0
addelpp = 0.d0
addm1h = 0.d0
addp1h = 0.d0
adfac = 0.d0
adphi = 0.d0
adphilc = 0.d0
adphimax = 0.d0
adphimd = 0.d0
adphimin = 0.d0
adpsi = 0.d0
adqi = 0.d0
adqim = 0.d0
adqimm = 0.d0
adqimmm = 0.d0
adqip = 0.d0
adqipp = 0.d0
adrecip_deli = 0.d0
adrecip_delip = 0.d0
adrp1h = 0.d0
adrp1h_cfl = 0.d0
advloc = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
eps = 9.9999999999999d-21
do j = sny+oly-3, 1-oly+4, -1
do i = snx+olx, 1-olx, -1
vloc = vfld(i,j)
cfl = vloc
if (calccfl) then
cfl = abs(vloc*deltatloc*recip_dyc(i,j,bi,bj))
endif
if (vtrans(i,j) .gt. 0.d0) then
qipp = q(i,j+1)
qip = q(i,j)
qi = q(i,j-1)
qim = q(i,j-2)
qimm = q(i,j-3)
qimmm = q(i,j-4)
mskip = masklocs(i,j+1)
mski = masklocs(i,j)
mskim = masklocs(i,j-1)
mskimm = masklocs(i,j-2)
mskimmm = masklocs(i,j-3)
else if (vtrans(i,j) .lt. 0.d0) then
qipp = q(i,j-2)
qip = q(i,j-1)
qi = q(i,j)
qim = q(i,j+1)
qimm = q(i,j+2)
qimmm = q(i,j+3)
mskip = masklocs(i,j-1)
mski = masklocs(i,j)
mskim = masklocs(i,j+1)
mskimm = masklocs(i,j+2)
mskimmm = masklocs(i,j+3)
else
qipp = 0.d0
qip = 0.d0
qi = 0.d0
qim = 0.d0
qimm = 0.d0
qimmm = 0.d0
mskip = 0.d0
mski = 0.d0
mskim = 0.d0
mskimm = 0.d0
mskimmm = 0.d0
endif
if (vtrans(i,j) .ne. 0.d0) then
fac = 1.d0
delp = (qip-qi)*mski
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
delm = (qi-qim)*mskim
del2 = delp-delm
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
delpp = (qipp-qip)*mskip*mski
del2p = delpp-delp
del3p = del2p-del2
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
delmm = (qim-qimm)*mskimm*mskim
del2m = delm-delmm
del3m = del2-del2m
del4 = del3p-del3m
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
del2pp = delpp-delp
del3pp = del2pp-del2p
del4p = del3pp-del3p
del5p = del4p-del4
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
delmmm = (qimm-qimmm)*mskimmm*mskimm*mskim
del2mm = delmm-delmmm
del3mm = del2m-del2mm
del4m = del3m-del3mm
del5m = del4-del4m
del6 = del5p-del5m
phi = phi-fac*del6
delip = (qip-qi)*mski
recip_delip = sign(1.d0,delip)/max(abs(delip),eps)
phi = phi*recip_delip
deli = (qi-qim)*mskim
recip_deli = sign(1.d0,deli)/max(abs(deli),eps)
rp1h = deli*recip_delip
rp1h_cfl = rp1h/(cfl+eps)
d2 = del2
d2p1 = del2p
d2m1 = del2m
a = 4.d0*d2-d2p1
b = 4.d0*d2p1-d2
c = d2
d = d2p1
dp1h = max(min(a,b,c,d),0.d0)+min(max(a,b,c,d),0.d0)
a = 4.d0*d2m1-d2
b = 4.d0*d2-d2m1
c = d2m1
d = d2
dm1h = max(min(a,b,c,d),0.d0)+min(max(a,b,c,d),0.d0)
phimd = 1.d0/(1.d0-cfl)*(delip-dp1h)*recip_delip
philc = rp1h_cfl*(1.d0+dm1h*recip_deli)
phimin = max(min(0.d0,phimd),min(0.d0,2.d0*rp1h_cfl,philc))
phimax = min(max(2.d0/(1.d0-cfl),phimd),max(0.d0,2.d0*
$rp1h_cfl,philc))
phi = max(phimin,min(phi,phimax))
psi = phi*0.5d0*(1.d0-cfl)
addelip = addelip+advt(i,j)*vtrans(i,j)*psi
adpsi = adpsi+advt(i,j)*vtrans(i,j)*delip
adqi = adqi+advt(i,j)*vtrans(i,j)
advtrans(i,j) = advtrans(i,j)+advt(i,j)*(qi+psi*delip)
advt(i,j) = 0.d0
adcfl = adcfl-0.5d0*adpsi*phi
adphi = adphi+0.5d0*adpsi*(1.d0-cfl)
adpsi = 0.d0
fac = 1.d0
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
phi = phi-fac*del6
phi = phi*recip_delip
phih = min(phi,phimax)
adphih = adphi*(0.5-sign(0.5d0,phimin-phih))
adphimin = adphimin+adphi*(0.5+sign(0.5d0,phimin-phih))
adphi = adphih*(0.5+sign(0.5d0,phimax-phi))
adphimax = adphimax+adphih*(0.5-sign(0.5d0,phimax-phi))
phimaxh = max(2.d0/(1.d0-cfl),phimd)
phimaxi = 2.d0*rp1h_cfl
phimaxj = max(0.d0,phimaxi)
phimaxk = max(phimaxj,philc)
adphimaxh = adphimax*(0.5+sign(0.5d0,phimaxk-phimaxh))
adphimaxk = adphimax*(0.5-sign(0.5d0,phimaxk-phimaxh))
adphilc = adphilc+adphimaxk*(0.5-sign(0.5d0,phimaxj-philc))
adrp1h_cfl = adrp1h_cfl+2*adphimaxk*(0.5+sign(0.5d0,phimaxj-
$philc))*(0.5-sign(0.5d0,0.d0-phimaxi))
adcfl = adcfl-adphimaxh*(0.5+sign(0.5d0,2.d0/(1.d0-cfl)-
$phimd))*((-2)/((1.d0-cfl)*(1.d0-cfl)))
adphimd = adphimd+adphimaxh*(0.5-sign(0.5d0,2.d0/(1.d0-cfl)-
$phimd))
adphimax = 0.d0
phiminh = min(0.d0,phimd)
phimini = 2.d0*rp1h_cfl
phiminj = min(0.d0,phimini)
phimink = min(phiminj,philc)
adphimink = adphimin*(0.5-sign(0.5d0,phiminh-phimink))
adphilc = adphilc+adphimink*(0.5-sign(0.5d0,philc-phiminj))
adrp1h_cfl = adrp1h_cfl+2*adphimink*(0.5+sign(0.5d0,philc-
$phiminj))*(0.5-sign(0.5d0,phimini-0.d0))
adphimd = adphimd+adphimin*(0.5+sign(0.5d0,phiminh-phimink))
$*(0.5-sign(0.5d0,phimd-0.d0))
adphimin = 0.d0
addm1h = addm1h+adphilc*rp1h_cfl*recip_deli
adrecip_deli = adrecip_deli+adphilc*rp1h_cfl*dm1h
adrp1h_cfl = adrp1h_cfl+adphilc*(1+dm1h*recip_deli)
adphilc = 0.d0
adcfl = adcfl-(-(adphimd/((1.d0-cfl)*(1.d0-cfl))))*(delip-
$dp1h)*recip_delip
addelip = addelip+adphimd*1.d0/(1.d0-cfl)*recip_delip
addp1h = addp1h-adphimd*1.d0/(1.d0-cfl)*recip_delip
adrecip_delip = adrecip_delip+adphimd*1.d0/(1.d0-cfl)*(
$delip-dp1h)
adphimd = 0.d0
dm1hi = max(a,b)
dm1hj = max(dm1hi,c)
dm1hm = min(a,b)
dm1hn = min(dm1hm,c)
addm1ho = addm1h*(0.5+sign(0.5d0,min(dm1hn,d)-0.d0))
add = add+addm1ho*(0.5-sign(0.5d0,d-dm1hn))
addm1hn = addm1ho*(0.5+sign(0.5d0,d-dm1hn))
adc = adc+addm1hn*(0.5-sign(0.5d0,c-dm1hm))
addm1hm = addm1hn*(0.5+sign(0.5d0,c-dm1hm))
ada = ada+addm1hm*(0.5+sign(0.5d0,b-a))
adb = adb+addm1hm*(0.5-sign(0.5d0,b-a))
addm1hk = addm1h*(0.5+sign(0.5d0,0.d0-max(dm1hj,d)))
add = add+addm1hk*(0.5-sign(0.5d0,dm1hj-d))
addm1hj = addm1hk*(0.5+sign(0.5d0,dm1hj-d))
adc = adc+addm1hj*(0.5-sign(0.5d0,dm1hi-c))
addm1hi = addm1hj*(0.5+sign(0.5d0,dm1hi-c))
ada = ada+addm1hi*(0.5+sign(0.5d0,a-b))
adb = adb+addm1hi*(0.5-sign(0.5d0,a-b))
addm1h = 0.d0
add2 = add2+add
add = 0.d0
add2m1 = add2m1+adc
adc = 0.d0
add2 = add2+4*adb
add2m1 = add2m1-adb
adb = 0.d0
add2 = add2-ada
add2m1 = add2m1+4*ada
ada = 0.d0
a = 4.d0*d2-d2p1
b = 4.d0*d2p1-d2
c = d2
d = d2p1
dp1hi = max(a,b)
dp1hj = max(dp1hi,c)
dp1hm = min(a,b)
dp1hn = min(dp1hm,c)
addp1ho = addp1h*(0.5+sign(0.5d0,min(dp1hn,d)-0.d0))
add = add+addp1ho*(0.5-sign(0.5d0,d-dp1hn))
addp1hn = addp1ho*(0.5+sign(0.5d0,d-dp1hn))
adc = adc+addp1hn*(0.5-sign(0.5d0,c-dp1hm))
addp1hm = addp1hn*(0.5+sign(0.5d0,c-dp1hm))
ada = ada+addp1hm*(0.5+sign(0.5d0,b-a))
adb = adb+addp1hm*(0.5-sign(0.5d0,b-a))
addp1hk = addp1h*(0.5+sign(0.5d0,0.d0-max(dp1hj,d)))
add = add+addp1hk*(0.5-sign(0.5d0,dp1hj-d))
addp1hj = addp1hk*(0.5+sign(0.5d0,dp1hj-d))
adc = adc+addp1hj*(0.5-sign(0.5d0,dp1hi-c))
addp1hi = addp1hj*(0.5+sign(0.5d0,dp1hi-c))
ada = ada+addp1hi*(0.5+sign(0.5d0,a-b))
adb = adb+addp1hi*(0.5-sign(0.5d0,a-b))
addp1h = 0.d0
add2p1 = add2p1+add
add = 0.d0
add2 = add2+adc
adc = 0.d0
add2 = add2-adb
add2p1 = add2p1+4*adb
adb = 0.d0
add2 = add2+4*ada
add2p1 = add2p1-ada
ada = 0.d0
addel2m = addel2m+add2m1
add2m1 = 0.d0
addel2p = addel2p+add2p1
add2p1 = 0.d0
addel2 = addel2+add2
add2 = 0.d0
adcfl = adcfl-adrp1h_cfl*(rp1h/((cfl+eps)*(cfl+eps)))
adrp1h = adrp1h+adrp1h_cfl/(cfl+eps)
adrp1h_cfl = 0.d0
addeli = addeli+adrp1h*recip_delip
adrecip_delip = adrecip_delip+adrp1h*deli
adrp1h = 0.d0
recip_delii = abs(deli)
recip_delih = max(recip_delii,eps)
adrecip_delii = -(adrecip_deli*sign(1.d0,deli)/(recip_delih*
$recip_delih)*(0.5+sign(0.5d0,recip_delii-eps)))
addeli = addeli+adrecip_delii*sign(1.d0,deli)
adrecip_deli = 0.d0
adqi = adqi+addeli*mskim
adqim = adqim-addeli*mskim
addeli = 0.d0
fac = 1.d0
phi = fac*delp
fac = fac*(cfl+1.d0)/3.d0
phi = phi-fac*del2
fac = fac*(cfl-2.d0)/4.d0
phi = phi+fac*del3p
fac = fac*(cfl-3.d0)/5.d0
phi = phi+fac*del4
fac = fac*(cfl+2.d0)/6.d0
phi = phi+fac*del5p
fac = fac*(cfl+2.d0)/7.d0
phi = phi-fac*del6
adrecip_delip = adrecip_delip+adphi*phi
adphi = adphi*recip_delip
recip_delipi = abs(delip)
recip_deliph = max(recip_delipi,eps)
adrecip_delipi = -(adrecip_delip*sign(1.d0,delip)/(
$recip_deliph*recip_deliph)*(0.5+sign(0.5d0,recip_delipi-eps)))
addelip = addelip+adrecip_delipi*sign(1.d0,delip)
adrecip_delip = 0.d0
adqi = adqi-addelip*mski
adqip = adqip+addelip*mski
addelip = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
fac = fac*(cfl+2.d0)/7.d0
addel6 = addel6-adphi*fac
adfac = adfac-adphi*del6
addel5m = addel5m-addel6
addel5p = addel5p+addel6
addel6 = 0.d0
addel4 = addel4+addel5m
addel4m = addel4m-addel5m
addel5m = 0.d0
addel3m = addel3m+addel4m
addel3mm = addel3mm-addel4m
addel4m = 0.d0
addel2m = addel2m+addel3mm
addel2mm = addel2mm-addel3mm
addel3mm = 0.d0
addelmm = addelmm+addel2mm
addelmmm = addelmmm-addel2mm
addel2mm = 0.d0
adqimm = adqimm+addelmmm*mskimmm*mskimm*mskim
adqimmm = adqimmm-addelmmm*mskimmm*mskimm*mskim
addelmmm = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
adcfl = adcfl+adfac*(fac/7.d0)
adfac = adfac*((2+cfl)/7.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
fac = fac*(cfl+2.d0)/6.d0
addel5p = addel5p+adphi*fac
adfac = adfac+adphi*del5p
addel4 = addel4-addel5p
addel4p = addel4p+addel5p
addel5p = 0.d0
addel3p = addel3p-addel4p
addel3pp = addel3pp+addel4p
addel4p = 0.d0
addel2p = addel2p-addel3pp
addel2pp = addel2pp+addel3pp
addel3pp = 0.d0
addelp = addelp-addel2pp
addelpp = addelpp+addel2pp
addel2pp = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
adcfl = adcfl+adfac*(fac/6.d0)
adfac = adfac*((2+cfl)/6.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
fac = fac*(cfl-3.d0)/5.d0
addel4 = addel4+adphi*fac
adfac = adfac+adphi*del4
addel3m = addel3m-addel4
addel3p = addel3p+addel4
addel4 = 0.d0
addel2 = addel2+addel3m
addel2m = addel2m-addel3m
addel3m = 0.d0
addelm = addelm+addel2m
addelmm = addelmm-addel2m
addel2m = 0.d0
adqim = adqim+addelmm*mskimm*mskim
adqimm = adqimm-addelmm*mskimm*mskim
addelmm = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
adcfl = adcfl+adfac*(fac/5.d0)
adfac = adfac*(((-3)+cfl)/5.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
fac = fac*(cfl-2.d0)/4.d0
addel3p = addel3p+adphi*fac
adfac = adfac+adphi*del3p
addel2 = addel2-addel3p
addel2p = addel2p+addel3p
addel3p = 0.d0
addelp = addelp-addel2p
addelpp = addelpp+addel2p
addel2p = 0.d0
adqip = adqip-addelpp*mskip*mski
adqipp = adqipp+addelpp*mskip*mski
addelpp = 0.d0
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
adcfl = adcfl+adfac*(fac/4.d0)
adfac = adfac*(((-2)+cfl)/4.d0)
fac = 1.d0
fac = fac*(cfl+1.d0)/3.d0
addel2 = addel2-adphi*fac
adfac = adfac-adphi*del2
addelm = addelm-addel2
addelp = addelp+addel2
addel2 = 0.d0
adqi = adqi+addelm*mskim
adqim = adqim-addelm*mskim
addelm = 0.d0
fac = 1.d0
adcfl = adcfl+adfac*(fac/3.d0)
adfac = adfac*((1+cfl)/3.d0)
fac = 1.d0
addelp = addelp+adphi*fac
adfac = adfac+adphi*delp
adphi = 0.d0
adqi = adqi-addelp*mski
adqip = adqip+addelp*mski
addelp = 0.d0
adfac = 0.d0
else
advt(i,j) = 0.d0
endif
if (vtrans(i,j) .gt. 0.d0) then
adq(i,j-4) = adq(i,j-4)+adqimmm
adqimmm = 0.d0
adq(i,j-3) = adq(i,j-3)+adqimm
adqimm = 0.d0
adq(i,j-2) = adq(i,j-2)+adqim
adqim = 0.d0
adq(i,j-1) = adq(i,j-1)+adqi
adqi = 0.d0
adq(i,j) = adq(i,j)+adqip
adqip = 0.d0
adq(i,j+1) = adq(i,j+1)+adqipp
adqipp = 0.d0
else if (vtrans(i,j) .lt. 0.d0) then
adq(i,j+3) = adq(i,j+3)+adqimmm
adqimmm = 0.d0
adq(i,j+2) = adq(i,j+2)+adqimm
adqimm = 0.d0
adq(i,j+1) = adq(i,j+1)+adqim
adqim = 0.d0
adq(i,j) = adq(i,j)+adqi
adqi = 0.d0
adq(i,j-1) = adq(i,j-1)+adqip
adqip = 0.d0
adq(i,j-2) = adq(i,j-2)+adqipp
adqipp = 0.d0
else
adqimmm = 0.d0
adqimm = 0.d0
adqim = 0.d0
adqi = 0.d0
adqip = 0.d0
adqipp = 0.d0
endif
if (calccfl) then
advloc = advloc+adcfl*deltatloc*recip_dyc(i,j,bi,bj)*sign(
$1.d0,vloc*deltatloc*recip_dyc(i,j,bi,bj))
adcfl = 0.d0
endif
advloc = advloc+adcfl
adcfl = 0.d0
advfld(i,j) = advfld(i,j)+advloc
advloc = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,sny+oly) = 0.d0
advt(i,sny+oly-1) = 0.d0
advt(i,sny+oly-2) = 0.d0
advt(i,4-oly) = 0.d0
advt(i,3-oly) = 0.d0
advt(i,2-oly) = 0.d0
advt(i,1-oly) = 0.d0
end do
end
subroutine adgad_u3_adv_r( bi, bj, k, rtrans, adrtrans, tracer,
$adtracer, adwt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwt(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
double precision adrj
double precision adrjjm
double precision adrjjp
double precision adrjm
double precision adrjp
double precision adwth
integer i
integer j
integer km1
integer km2
integer kp1
double precision rj
double precision rjjm
double precision rjjp
double precision rjm
double precision rjp
double precision wth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
km2 = max(1,k-2)
km1 = max(1,k-1)
kp1 = min(nr,k+1)
if (k .eq. 1 .or. k .gt. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adwt(i,j) = 0.d0
end do
end do
else
do j = sny+oly, 1-oly, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
do i = snx+olx, 1-olx, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
rjp = (tracer(i,j,kp1,bi,bj)-tracer(i,j,k,bi,bj))*maskc(i,j,
$kp1,bi,bj)
rj = tracer(i,j,k,bi,bj)-tracer(i,j,km1,bi,bj)
rjm = (tracer(i,j,km1,bi,bj)-tracer(i,j,km2,bi,bj))*maskc(i,
$j,km2,bi,bj)
rjjp = rjp-rj
rjjm = rj-rjm
wth = abs(rtrans(i,j))
adrjjm = adrjjm+adwt(i,j)*maskc(i,j,km1,bi,bj)*((-(0.5d0*
$rtrans(i,j)*onesixth))+0.5d0*wth*onesixth)
adrjjp = adrjjp+adwt(i,j)*maskc(i,j,km1,bi,bj)*((-(0.5d0*
$rtrans(i,j)*onesixth))-0.5d0*wth*onesixth)
adrtrans(i,j) = adrtrans(i,j)+adwt(i,j)*maskc(i,j,km1,bi,bj)
$*(0.5d0*(tracer(i,j,k,bi,bj)+tracer(i,j,km1,bi,bj))-0.5d0*
$onesixth*(rjjm+rjjp))
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+0.5d0*adwt(i,
$j)*maskc(i,j,km1,bi,bj)*rtrans(i,j)
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+0.5d0*
$adwt(i,j)*maskc(i,j,km1,bi,bj)*rtrans(i,j)
adwth = 0.5d0*adwt(i,j)*maskc(i,j,km1,bi,bj)*onesixth*(rjjm-
$rjjp)
adrtrans(i,j) = adrtrans(i,j)+adwth*sign(1.d0,rtrans(i,j))
adwt(i,j) = 0.d0
adrj = adrj+adrjjm
adrjm = adrjm-adrjjm
adrjjm = 0.d0
adrj = adrj-adrjjp
adrjp = adrjp+adrjjp
adrjjp = 0.d0
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+adrjm*
$maskc(i,j,km2,bi,bj)
adtracer(i,j,km2,bi,bj) = adtracer(i,j,km2,bi,bj)-adrjm*
$maskc(i,j,km2,bi,bj)
adrjm = 0.d0
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+adrj
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)-adrj
adrj = 0.d0
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)-adrjp*maskc(i,
$j,kp1,bi,bj)
adtracer(i,j,kp1,bi,bj) = adtracer(i,j,kp1,bi,bj)+adrjp*
$maskc(i,j,kp1,bi,bj)
adrjp = 0.d0
end do
end do
endif
end
subroutine adgad_u3_adv_x( bi, bj, k, utrans, adutrans, tracer,
$adtracer, adut )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision adut(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adrj
double precision adrjjm
double precision adrjjp
double precision adrjm
double precision adrjp
double precision aduth
integer i
integer j
double precision rj
double precision rjjm
double precision rjjp
double precision rjm
double precision rjp
double precision uth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly, 1-oly, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
do i = snx+olx-1, 1-olx+2, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
rjp = (tracer(i+1,j)-tracer(i,j))*maskw(i+1,j,k,bi,bj)
rj = (tracer(i,j)-tracer(i-1,j))*maskw(i,j,k,bi,bj)
rjm = (tracer(i-1,j)-tracer(i-2,j))*maskw(i-1,j,k,bi,bj)
rjjp = rjp-rj
rjjm = rj-rjm
uth = abs(utrans(i,j))
adrjjm = adrjjm+adut(i,j)*((-(0.5d0*utrans(i,j)*onesixth))-
$0.5d0*uth*onesixth)
adrjjp = adrjjp+adut(i,j)*((-(0.5d0*utrans(i,j)*onesixth))+
$0.5d0*uth*onesixth)
adtracer(i-1,j) = adtracer(i-1,j)+0.5d0*adut(i,j)*utrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*adut(i,j)*utrans(i,j)
aduth = 0.5d0*adut(i,j)*onesixth*(rjjp-rjjm)
adutrans(i,j) = adutrans(i,j)+0.5d0*adut(i,j)*(tracer(i,j)+
$tracer(i-1,j)-onesixth*(rjjp+rjjm))
adutrans(i,j) = adutrans(i,j)+aduth*sign(1.d0,utrans(i,j))
adut(i,j) = 0.d0
adrj = adrj+adrjjm
adrjm = adrjm-adrjjm
adrjjm = 0.d0
adrj = adrj-adrjjp
adrjp = adrjp+adrjjp
adrjjp = 0.d0
adtracer(i-2,j) = adtracer(i-2,j)-adrjm*maskw(i-1,j,k,bi,bj)
adtracer(i-1,j) = adtracer(i-1,j)+adrjm*maskw(i-1,j,k,bi,bj)
adrjm = 0.d0
adtracer(i-1,j) = adtracer(i-1,j)-adrj*maskw(i,j,k,bi,bj)
adtracer(i,j) = adtracer(i,j)+adrj*maskw(i,j,k,bi,bj)
adrj = 0.d0
adtracer(i+1,j) = adtracer(i+1,j)+adrjp*maskw(i+1,j,k,bi,bj)
adtracer(i,j) = adtracer(i,j)-adrjp*maskw(i+1,j,k,bi,bj)
adrjp = 0.d0
end do
end do
end
subroutine adgad_u3_adv_y( bi, bj, k, vtrans, advtrans, tracer,
$adtracer, advt )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly)
double precision advt(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision tracer(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adrj
double precision adrjjm
double precision adrjjp
double precision adrjm
double precision adrjp
double precision advth
integer i
integer j
double precision rj
double precision rjjm
double precision rjjp
double precision rjm
double precision rjp
double precision vth
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = sny+oly-1, 1-oly+2, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
do i = snx+olx, 1-olx, -1
adrj = 0.d0
adrjjm = 0.d0
adrjjp = 0.d0
adrjm = 0.d0
adrjp = 0.d0
rjp = (tracer(i,j+1)-tracer(i,j))*masks(i,j+1,k,bi,bj)
rj = (tracer(i,j)-tracer(i,j-1))*masks(i,j,k,bi,bj)
rjm = (tracer(i,j-1)-tracer(i,j-2))*masks(i,j-1,k,bi,bj)
rjjp = rjp-rj
rjjm = rj-rjm
vth = abs(vtrans(i,j))
adrjjm = adrjjm+advt(i,j)*((-(0.5d0*vtrans(i,j)*onesixth))-
$0.5d0*vth*onesixth)
adrjjp = adrjjp+advt(i,j)*((-(0.5d0*vtrans(i,j)*onesixth))+
$0.5d0*vth*onesixth)
adtracer(i,j-1) = adtracer(i,j-1)+0.5d0*advt(i,j)*vtrans(i,j)
adtracer(i,j) = adtracer(i,j)+0.5d0*advt(i,j)*vtrans(i,j)
advth = 0.5d0*advt(i,j)*onesixth*(rjjp-rjjm)
advtrans(i,j) = advtrans(i,j)+0.5d0*advt(i,j)*(tracer(i,j)+
$tracer(i,j-1)-onesixth*(rjjp+rjjm))
advtrans(i,j) = advtrans(i,j)+advth*sign(1.d0,vtrans(i,j))
advt(i,j) = 0.d0
adrj = adrj+adrjjm
adrjm = adrjm-adrjjm
adrjjm = 0.d0
adrj = adrj-adrjjp
adrjp = adrjp+adrjjp
adrjjp = 0.d0
adtracer(i,j-2) = adtracer(i,j-2)-adrjm*masks(i,j-1,k,bi,bj)
adtracer(i,j-1) = adtracer(i,j-1)+adrjm*masks(i,j-1,k,bi,bj)
adrjm = 0.d0
adtracer(i,j-1) = adtracer(i,j-1)-adrj*masks(i,j,k,bi,bj)
adtracer(i,j) = adtracer(i,j)+adrj*masks(i,j,k,bi,bj)
adrj = 0.d0
adtracer(i,j+1) = adtracer(i,j+1)+adrjp*masks(i,j+1,k,bi,bj)
adtracer(i,j) = adtracer(i,j)-adrjp*masks(i,j+1,k,bi,bj)
adrjp = 0.d0
end do
end do
do i = 1-olx, snx+olx
advt(i,sny+oly) = 0.d0
advt(i,2-oly) = 0.d0
advt(i,1-oly) = 0.d0
end do
end
subroutine adgmredi_calc_diff( bi, bj, imin, imax, jmin, jmax,
$karg, ksize, adkapparx, traceridentity )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_tr1
parameter ( gad_tr1 = 3 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adkwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_wtensor/ adkwx, adkwy, adkwz
C==============================================
C declare arguments
C==============================================
integer ksize
double precision adkapparx(1-olx:snx+olx,1-oly:sny+oly,ksize)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer karg
integer traceridentity
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer k
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (karg .eq. 0) then
do k = 1, min(nr,ksize)
do j = jmin, jmax
do i = imin, imax
if (traceridentity .lt. gad_tr1) then
adkwz(i,j,k,bi,bj) = adkwz(i,j,k,bi,bj)+adkapparx(i,j,k)
else
adkwz(i,j,k,bi,bj) = adkwz(i,j,k,bi,bj)+adkapparx(i,j,k)
endif
end do
end do
end do
else
k = min(karg,ksize)
do j = jmin, jmax
do i = imin, imax
if (traceridentity .lt. gad_tr1) then
adkwz(i,j,karg,bi,bj) = adkwz(i,j,karg,bi,bj)+adkapparx(i,
$j,k)
else
adkwz(i,j,karg,bi,bj) = adkwz(i,j,karg,bi,bj)+adkapparx(i,
$j,k)
endif
end do
end do
endif
end
subroutine adgmredi_calc_tensor( adsigmax, adsigmay, adsigmar, bi,
$ bj, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op25
parameter ( op25 = 0.25d0 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adkux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_hortensor/ adkux, adkvy
double precision adkuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_uvtensor/ adkuz, adkvz
double precision adkwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_wtensor/ adkwx, adkwy, adkwz
real*8 comlev1_bibj_k_dsigmadx_16h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmad0/ comlev1_bibj_k_dsigmadx_16h
real*8 comlev1_bibj_k_dsigmady_2h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmad1/ comlev1_bibj_k_dsigmady_2h
real*8 comlev1_bibj_k_dsigmadx_1h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmad2/ comlev1_bibj_k_dsigmadx_1h
real*8 comlev1_bibj_k_dsigmadr_30h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadr/ comlev1_bibj_k_dsigmadr_30h
real*8 comlev1_bibj_k_dsigmadr_18h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmads/ comlev1_bibj_k_dsigmadr_18h
real*8 comlev1_bibj_k_dsigmadr_3h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadt/ comlev1_bibj_k_dsigmadr_3h
real*8 comlev1_bibj_k_dsigmadx_28h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadx/ comlev1_bibj_k_dsigmadx_28h
real*8 comlev1_bibj_k_dsigmady_29h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmady/ comlev1_bibj_k_dsigmady_29h
real*8 comlev1_bibj_k_dsigmady_17h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadz/ comlev1_bibj_k_dsigmady_17h
real*8 comlev1_bibj_k_kux_25h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadkuy/ comlev1_bibj_k_kux_25h
real*8 comlev1_bibj_k_kvy_35h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadkv0/ comlev1_bibj_k_kvy_35h
real*8 comlev1_bibj_k_slopex_7h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslope0/ comlev1_bibj_k_slopex_7h
real*8 comlev1_bibj_k_slopesqr_9h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadslopesqr/ comlev1_bibj_k_slopesqr_9h
real*8 comlev1_bibj_k_slopex_26h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslopex/ comlev1_bibj_k_slopex_26h
real*8 comlev1_bibj_k_slopey_36h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslopey/ comlev1_bibj_k_slopey_36h
real*8 comlev1_bibj_k_slopey_8h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslopez/ comlev1_bibj_k_slopey_8h
real*8 comlev1_bibj_k_taperfct_37h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfct/ comlev1_bibj_k_taperfct_37h
real*8 comlev1_bibj_k_taperfct_27h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfcu/ comlev1_bibj_k_taperfct_27h
real*8 comlev1_bibj_k_taperfct_11h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfcv/ comlev1_bibj_k_taperfct_11h
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision gm_advect
double precision gm_rmaxslope
double precision gm_skewflx
common /gm_derived_par/ gm_rmaxslope, gm_skewflx, gm_advect
double precision kux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_hortensor/ kux, kvy
character*(40) gm_taper_scheme
common /gm_params_c/ gm_taper_scheme
logical gm_advform
logical gm_advseparate
logical gm_extradiag
logical gm_inmomasstress
logical gm_mdsio
logical gm_mnc
common /gm_params_l/ gm_advform, gm_advseparate, gm_extradiag,
$gm_mnc, gm_mdsio, gm_inmomasstress
double precision gm_background_k
double precision gm_factrl2dz
double precision gm_factrl2ml
double precision gm_isopyck
double precision gm_kmin_horiz
double precision gm_maxslope
double precision gm_maxtranslay
double precision gm_scrit
double precision gm_sd
double precision gm_slopesqcutoff
double precision gm_small_number
double precision gm_visbeck_alpha
double precision gm_visbeck_depth
double precision gm_visbeck_length
double precision gm_visbeck_maxslope
double precision gm_visbeck_maxval_k
double precision gm_visbeck_mindepth
double precision gm_visbeck_minval_k
common /gm_params_r/ gm_isopyck, gm_background_k, gm_maxslope,
$gm_kmin_horiz, gm_small_number, gm_slopesqcutoff,
$gm_visbeck_alpha, gm_visbeck_length, gm_visbeck_depth,
$gm_visbeck_mindepth, gm_visbeck_maxslope, gm_visbeck_minval_k,
$gm_visbeck_maxval_k, gm_factrl2dz, gm_factrl2ml, gm_maxtranslay,
$gm_scrit, gm_sd
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
double precision adsigmar(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adsigmax(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adsigmay(1-olx:snx+olx,1-oly:sny+oly,nr)
integer bi
integer bj
integer mythid
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision addsigmadr(1-olx:snx+olx,1-oly:sny+oly)
double precision addsigmadx(1-olx:snx+olx,1-oly:sny+oly)
double precision addsigmady(1-olx:snx+olx,1-oly:sny+oly)
double precision adslopesqr(1-olx:snx+olx,1-oly:sny+oly)
double precision adslopex(1-olx:snx+olx,1-oly:sny+oly)
double precision adslopey(1-olx:snx+olx,1-oly:sny+oly)
double precision adtaperfct(1-olx:snx+olx,1-oly:sny+oly)
double precision cspd
double precision dsigmadr(1-olx:snx+olx,1-oly:sny+oly)
double precision dsigmadx(1-olx:snx+olx,1-oly:sny+oly)
double precision dsigmady(1-olx:snx+olx,1-oly:sny+oly)
double precision fcoriloc
integer i
integer igmkey
integer ip1
integer ip2
integer j
integer k
double precision kgm_tmp
integer kkey
integer kp1
double precision ldd97_lrhoc(1-olx:snx+olx,1-oly:sny+oly)
double precision ldd97_lrhos(1-olx:snx+olx,1-oly:sny+oly)
double precision ldd97_lrhow(1-olx:snx+olx,1-oly:sny+oly)
double precision lrhoinf
double precision lrhosup
double precision maskp1
integer max1
integer max2
integer max3
double precision slopesqr(1-olx:snx+olx,1-oly:sny+oly)
double precision slopex(1-olx:snx+olx,1-oly:sny+oly)
double precision slopey(1-olx:snx+olx,1-oly:sny+oly)
double precision taperfct(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addsigmadr(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addsigmadx(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addsigmady(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adslopesqr(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adslopex(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adslopey(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtaperfct(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igmkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
if (gm_taper_scheme .eq. 'ldd97' .or. gm_taper_scheme .eq. 'fm07')
$ then
cspd = 2.d0
lrhoinf = 15000.d0
lrhosup = 1.d+5
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (fcori(i,j,bi,bj) .ne. 0.) then
ldd97_lrhoc(i,j) = cspd/abs(fcori(i,j,bi,bj))
else
ldd97_lrhoc(i,j) = lrhosup
endif
ldd97_lrhoc(i,j) = max(lrhoinf,min(ldd97_lrhoc(i,j),lrhosup)
$)
end do
end do
do j = 1-oly, sny+oly
ldd97_lrhow(1-olx,j) = lrhosup
do i = 1-olx+1, snx+olx
fcoriloc = op5*(fcori(i-1,j,bi,bj)+fcori(i,j,bi,bj))
if (fcoriloc .ne. 0.) then
ldd97_lrhow(i,j) = cspd/abs(fcoriloc)
else
ldd97_lrhow(i,j) = lrhosup
endif
ldd97_lrhow(i,j) = max(lrhoinf,min(ldd97_lrhow(i,j),lrhosup)
$)
end do
end do
do i = 1-olx+1, snx+olx
ldd97_lrhos(i,1-oly) = lrhosup
end do
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
fcoriloc = op5*(fcori(i,j-1,bi,bj)+fcori(i,j,bi,bj))
if (fcoriloc .ne. 0.) then
ldd97_lrhos(i,j) = cspd/abs(fcoriloc)
else
ldd97_lrhos(i,j) = lrhosup
endif
ldd97_lrhos(i,j) = max(lrhoinf,min(ldd97_lrhos(i,j),lrhosup)
$)
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
ldd97_lrhoc(i,j) = 0.d0
ldd97_lrhow(i,j) = 0.d0
ldd97_lrhos(i,j) = 0.d0
end do
end do
endif
do k = 1, nr
kp1 = min(nr,k+1)
maskp1 = 1.d0
if (k .ge. nr) then
maskp1 = 0.d0
endif
kkey = (igmkey-1)*nr+k
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadx(ip1,ip2) = comlev1_bibj_k_dsigmadx_28h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmady(ip1,ip2) = comlev1_bibj_k_dsigmady_29h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadr(ip1,ip2) = comlev1_bibj_k_dsigmadr_30h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kvy(ip1,ip2,k,bi,bj) = comlev1_bibj_k_kvy_35h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
slopey(ip1,ip2) = comlev1_bibj_k_slopey_36h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
taperfct(ip1,ip2) = comlev1_bibj_k_taperfct_37h(ip1,ip2,
$kkey)
end do
end do
if (gm_extradiag) then
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adslopey(i,j) = adslopey(i,j)+adkvz(i,j,k,bi,bj)*(
$gm_isopyck-gm_skewflx*gm_background_k)*taperfct(i,j)
adtaperfct(i,j) = adtaperfct(i,j)+adkvz(i,j,k,bi,bj)*(
$gm_isopyck-gm_skewflx*gm_background_k)*slopey(i,j)
adkvz(i,j,k,bi,bj) = 0.d0
end do
end do
endif
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adkvy(i,j,k,bi,bj) = adkvy(i,j,k,bi,bj)*(0.5+sign(0.5d0,kvy(
$i,j,k,bi,bj)-gm_kmin_horiz))
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adtaperfct(i,j) = adtaperfct(i,j)+adkvy(i,j,k,bi,bj)*
$gm_isopyck
adkvy(i,j,k,bi,bj) = 0.d0
end do
end do
call adgmredi_slope_limit( adslopex,adslopey,adslopesqr,
$adtaperfct,dsigmadr,addsigmadr,dsigmadx,addsigmadx,dsigmady,
$addsigmady,ldd97_lrhos,rc,k )
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adsigmar(i,j-1,k) = adsigmar(i,j-1,k)+addsigmadr(i,j)*op25*
$masks(i,j,k,bi,bj)
adsigmar(i,j-1,kp1) = adsigmar(i,j-1,kp1)+addsigmadr(i,j)*
$op25*maskp1*masks(i,j,k,bi,bj)
adsigmar(i,j,k) = adsigmar(i,j,k)+addsigmadr(i,j)*op25*
$masks(i,j,k,bi,bj)
adsigmar(i,j,kp1) = adsigmar(i,j,kp1)+addsigmadr(i,j)*op25*
$maskp1*masks(i,j,k,bi,bj)
addsigmadr(i,j) = 0.d0
adsigmay(i,j,k) = adsigmay(i,j,k)+addsigmady(i,j)*masks(i,j,
$k,bi,bj)
addsigmady(i,j) = 0.d0
adsigmax(i+1,j-1,k) = adsigmax(i+1,j-1,k)+addsigmadx(i,j)*
$op25*masks(i,j,k,bi,bj)
adsigmax(i,j-1,k) = adsigmax(i,j-1,k)+addsigmadx(i,j)*op25*
$masks(i,j,k,bi,bj)
adsigmax(i+1,j,k) = adsigmax(i+1,j,k)+addsigmadx(i,j)*op25*
$masks(i,j,k,bi,bj)
adsigmax(i,j,k) = adsigmax(i,j,k)+addsigmadx(i,j)*op25*
$masks(i,j,k,bi,bj)
addsigmadx(i,j) = 0.d0
end do
end do
end do
do k = 1, nr
kp1 = min(nr,k+1)
maskp1 = 1.d0
if (k .ge. nr) then
maskp1 = 0.d0
endif
kkey = (igmkey-1)*nr+k
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadx(ip1,ip2) = comlev1_bibj_k_dsigmadx_16h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmady(ip1,ip2) = comlev1_bibj_k_dsigmady_17h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadr(ip1,ip2) = comlev1_bibj_k_dsigmadr_18h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kux(ip1,ip2,k,bi,bj) = comlev1_bibj_k_kux_25h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
slopex(ip1,ip2) = comlev1_bibj_k_slopex_26h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
taperfct(ip1,ip2) = comlev1_bibj_k_taperfct_27h(ip1,ip2,
$kkey)
end do
end do
if (gm_extradiag) then
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adslopex(i,j) = adslopex(i,j)+adkuz(i,j,k,bi,bj)*(
$gm_isopyck-gm_skewflx*gm_background_k)*taperfct(i,j)
adtaperfct(i,j) = adtaperfct(i,j)+adkuz(i,j,k,bi,bj)*(
$gm_isopyck-gm_skewflx*gm_background_k)*slopex(i,j)
adkuz(i,j,k,bi,bj) = 0.d0
end do
end do
endif
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adkux(i,j,k,bi,bj) = adkux(i,j,k,bi,bj)*(0.5+sign(0.5d0,kux(
$i,j,k,bi,bj)-gm_kmin_horiz))
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adtaperfct(i,j) = adtaperfct(i,j)+adkux(i,j,k,bi,bj)*
$gm_isopyck
adkux(i,j,k,bi,bj) = 0.d0
end do
end do
call adgmredi_slope_limit( adslopex,adslopey,adslopesqr,
$adtaperfct,dsigmadr,addsigmadr,dsigmadx,addsigmadx,dsigmady,
$addsigmady,ldd97_lrhow,rc,k )
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adsigmar(i-1,j,k) = adsigmar(i-1,j,k)+addsigmadr(i,j)*op25*
$maskw(i,j,k,bi,bj)
adsigmar(i,j,k) = adsigmar(i,j,k)+addsigmadr(i,j)*op25*
$maskw(i,j,k,bi,bj)
adsigmar(i-1,j,kp1) = adsigmar(i-1,j,kp1)+addsigmadr(i,j)*
$op25*maskp1*maskw(i,j,k,bi,bj)
adsigmar(i,j,kp1) = adsigmar(i,j,kp1)+addsigmadr(i,j)*op25*
$maskp1*maskw(i,j,k,bi,bj)
addsigmadr(i,j) = 0.d0
adsigmay(i-1,j+1,k) = adsigmay(i-1,j+1,k)+addsigmady(i,j)*
$op25*maskw(i,j,k,bi,bj)
adsigmay(i,j+1,k) = adsigmay(i,j+1,k)+addsigmady(i,j)*op25*
$maskw(i,j,k,bi,bj)
adsigmay(i-1,j,k) = adsigmay(i-1,j,k)+addsigmady(i,j)*op25*
$maskw(i,j,k,bi,bj)
adsigmay(i,j,k) = adsigmay(i,j,k)+addsigmady(i,j)*op25*
$maskw(i,j,k,bi,bj)
addsigmady(i,j) = 0.d0
adsigmax(i,j,k) = adsigmax(i,j,k)+addsigmadx(i,j)*maskw(i,j,
$k,bi,bj)
addsigmadx(i,j) = 0.d0
end do
end do
end do
do k = 1, nr
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kgm_tmp = gm_isopyck+gm_skewflx*gm_background_k
adkwz(i,j,k,bi,bj) = adkwz(i,j,k,bi,bj)*gm_isopyck
adkwy(i,j,k,bi,bj) = adkwy(i,j,k,bi,bj)*kgm_tmp
adkwx(i,j,k,bi,bj) = adkwx(i,j,k,bi,bj)*kgm_tmp
end do
end do
end do
do k = 2, nr
kkey = (igmkey-1)*nr+k
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadx(ip1,ip2) = comlev1_bibj_k_dsigmadx_1h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmady(ip1,ip2) = comlev1_bibj_k_dsigmady_2h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadr(ip1,ip2) = comlev1_bibj_k_dsigmadr_3h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
slopex(ip1,ip2) = comlev1_bibj_k_slopex_7h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
slopey(ip1,ip2) = comlev1_bibj_k_slopey_8h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
slopesqr(ip1,ip2) = comlev1_bibj_k_slopesqr_9h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
taperfct(ip1,ip2) = comlev1_bibj_k_taperfct_11h(ip1,ip2,
$kkey)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adslopesqr(i,j) = adslopesqr(i,j)+adkwz(i,j,k,bi,bj)*
$taperfct(i,j)
adtaperfct(i,j) = adtaperfct(i,j)+adkwz(i,j,k,bi,bj)*
$slopesqr(i,j)
adkwz(i,j,k,bi,bj) = 0.d0
adslopey(i,j) = adslopey(i,j)+adkwy(i,j,k,bi,bj)*taperfct(i,
$j)
adtaperfct(i,j) = adtaperfct(i,j)+adkwy(i,j,k,bi,bj)*slopey(
$i,j)
adkwy(i,j,k,bi,bj) = 0.d0
adslopex(i,j) = adslopex(i,j)+adkwx(i,j,k,bi,bj)*taperfct(i,
$j)
adtaperfct(i,j) = adtaperfct(i,j)+adkwx(i,j,k,bi,bj)*slopex(
$i,j)
adkwx(i,j,k,bi,bj) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adslopesqr(i,j) = adslopesqr(i,j)*maskc(i,j,k,bi,bj)
adslopey(i,j) = adslopey(i,j)*maskc(i,j,k,bi,bj)
adslopex(i,j) = adslopex(i,j)*maskc(i,j,k,bi,bj)
end do
end do
call adgmredi_slope_limit( adslopex,adslopey,adslopesqr,
$adtaperfct,dsigmadr,addsigmadr,dsigmadx,addsigmadx,dsigmady,
$addsigmady,ldd97_lrhoc,rf,k )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adsigmar(i,j,k) = adsigmar(i,j,k)+addsigmadr(i,j)
addsigmadr(i,j) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adsigmay(i,j+1,k-1) = adsigmay(i,j+1,k-1)+addsigmady(i,j)*
$op25*maskc(i,j,k,bi,bj)
adsigmay(i,j+1,k) = adsigmay(i,j+1,k)+addsigmady(i,j)*op25*
$maskc(i,j,k,bi,bj)
adsigmay(i,j,k-1) = adsigmay(i,j,k-1)+addsigmady(i,j)*op25*
$maskc(i,j,k,bi,bj)
adsigmay(i,j,k) = adsigmay(i,j,k)+addsigmady(i,j)*op25*
$maskc(i,j,k,bi,bj)
addsigmady(i,j) = 0.d0
adsigmax(i+1,j,k-1) = adsigmax(i+1,j,k-1)+addsigmadx(i,j)*
$op25*maskc(i,j,k,bi,bj)
adsigmax(i,j,k-1) = adsigmax(i,j,k-1)+addsigmadx(i,j)*op25*
$maskc(i,j,k,bi,bj)
adsigmax(i+1,j,k) = adsigmax(i+1,j,k)+addsigmadx(i,j)*op25*
$maskc(i,j,k,bi,bj)
adsigmax(i,j,k) = adsigmax(i,j,k)+addsigmadx(i,j)*op25*
$maskc(i,j,k,bi,bj)
addsigmadx(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adkvz(i,j,k,bi,bj) = 0.d0
adkuz(i,j,k,bi,bj) = 0.d0
adkvy(i,j,k,bi,bj) = 0.d0
adkux(i,j,k,bi,bj) = 0.d0
adkwz(i,j,k,bi,bj) = 0.d0
adkwy(i,j,k,bi,bj) = 0.d0
adkwx(i,j,k,bi,bj) = 0.d0
adslopesqr(i,j) = 0.d0
addsigmadr(i,j) = 0.d0
addsigmady(i,j) = 0.d0
addsigmadx(i,j) = 0.d0
adslopey(i,j) = 0.d0
adslopex(i,j) = 0.d0
end do
end do
end do
end
subroutine mdgmredi_calc_tensor( imin, imax, jmin, jmax, sigmax,
$sigmay, sigmar, bi, bj, mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op25
parameter ( op25 = 0.25d0 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_k_baseslope_31h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadbaseslope/ comlev1_bibj_k_baseslope_31h
real*8 comlev1_bibj_k_baseslope_20h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadbaseslopf/ comlev1_bibj_k_baseslope_20h
real*8 comlev1_bibj_k_baseslope_4h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadbaseslopg/ comlev1_bibj_k_baseslope_4h
real*8 comlev1_bibj_k_dsigmadx_16h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmad0/ comlev1_bibj_k_dsigmadx_16h
real*8 comlev1_bibj_k_dsigmady_2h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmad1/ comlev1_bibj_k_dsigmady_2h
real*8 comlev1_bibj_k_dsigmadx_1h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmad2/ comlev1_bibj_k_dsigmadx_1h
real*8 comlev1_bibj_k_dsigmadr_30h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadr/ comlev1_bibj_k_dsigmadr_30h
real*8 comlev1_bibj_k_dsigmadr_18h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmads/ comlev1_bibj_k_dsigmadr_18h
real*8 comlev1_bibj_k_dsigmadr_3h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadt/ comlev1_bibj_k_dsigmadr_3h
real*8 comlev1_bibj_k_dsigmadr_10h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadu/ comlev1_bibj_k_dsigmadr_10h
real*8 comlev1_bibj_k_dsigmadx_28h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadx/ comlev1_bibj_k_dsigmadx_28h
real*8 comlev1_bibj_k_dsigmady_29h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmady/ comlev1_bibj_k_dsigmady_29h
real*8 comlev1_bibj_k_dsigmady_17h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /caddsigmadz/ comlev1_bibj_k_dsigmady_17h
real*8 comlev1_bibj_k_htranslay_5h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadhtransla0/ comlev1_bibj_k_htranslay_5h
real*8 comlev1_bibj_k_htranslay_32h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadhtranslay/ comlev1_bibj_k_htranslay_32h
real*8 comlev1_bibj_k_htranslay_21h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadhtranslaz/ comlev1_bibj_k_htranslay_21h
real*8 comlev1_bibj_k_kux_25h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadkuy/ comlev1_bibj_k_kux_25h
real*8 comlev1_bibj_k_kvy_35h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadkv0/ comlev1_bibj_k_kvy_35h
real*8 comlev1_bibj_k_kwy_13h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadkw0/ comlev1_bibj_k_kwy_13h
real*8 comlev1_bibj_k_kwx_12h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadkw1/ comlev1_bibj_k_kwx_12h
real*8 comlev1_bibj_k_kwz_14h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadkwz/ comlev1_bibj_k_kwz_14h
real*8 comlev1_bibj_k_locmixlayer_19h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadlocmixlayer/ comlev1_bibj_k_locmixlayer_19h
real*8 comlev1_bibj_k_reciplambda_33h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadreciplambda/ comlev1_bibj_k_reciplambda_33h
real*8 comlev1_bibj_k_reciplambda_22h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadreciplambdb/ comlev1_bibj_k_reciplambda_22h
real*8 comlev1_bibj_k_reciplambda_6h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadreciplambdc/ comlev1_bibj_k_reciplambda_6h
real*8 comlev1_bibj_k_slopex_7h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslope0/ comlev1_bibj_k_slopex_7h
real*8 comlev1_bibj_k_slopesqr_9h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadslopesqr/ comlev1_bibj_k_slopesqr_9h
real*8 comlev1_bibj_k_slopesqr_23h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadslopesqs/ comlev1_bibj_k_slopesqr_23h
real*8 comlev1_bibj_k_slopesqr_15h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadslopesqt/ comlev1_bibj_k_slopesqr_15h
real*8 comlev1_bibj_k_slopex_26h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslopex/ comlev1_bibj_k_slopex_26h
real*8 comlev1_bibj_k_slopey_36h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslopey/ comlev1_bibj_k_slopey_36h
real*8 comlev1_bibj_k_slopey_8h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadslopez/ comlev1_bibj_k_slopey_8h
real*8 comlev1_bibj_k_taperfct_37h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfct/ comlev1_bibj_k_taperfct_37h
real*8 comlev1_bibj_k_taperfct_27h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfcu/ comlev1_bibj_k_taperfct_27h
real*8 comlev1_bibj_k_taperfct_11h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfcv/ comlev1_bibj_k_taperfct_11h
real*8 comlev1_bibj_k_taperfct_34h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfcw/ comlev1_bibj_k_taperfct_34h
real*8 comlev1_bibj_k_taperfct_24h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadtaperfcx/ comlev1_bibj_k_taperfct_24h
double precision hmixlayer(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ivdconvcount(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision phihydlow(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision totphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_diag/ phihydlow, totphihyd, rhoinsitu, hmixlayer,
$ivdconvcount
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision gm_advect
double precision gm_rmaxslope
double precision gm_skewflx
common /gm_derived_par/ gm_rmaxslope, gm_skewflx, gm_advect
double precision kux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_hortensor/ kux, kvy
character*(40) gm_taper_scheme
common /gm_params_c/ gm_taper_scheme
logical gm_advform
logical gm_advseparate
logical gm_extradiag
logical gm_inmomasstress
logical gm_mdsio
logical gm_mnc
common /gm_params_l/ gm_advform, gm_advseparate, gm_extradiag,
$gm_mnc, gm_mdsio, gm_inmomasstress
double precision gm_background_k
double precision gm_factrl2dz
double precision gm_factrl2ml
double precision gm_isopyck
double precision gm_kmin_horiz
double precision gm_maxslope
double precision gm_maxtranslay
double precision gm_scrit
double precision gm_sd
double precision gm_slopesqcutoff
double precision gm_small_number
double precision gm_visbeck_alpha
double precision gm_visbeck_depth
double precision gm_visbeck_length
double precision gm_visbeck_maxslope
double precision gm_visbeck_maxval_k
double precision gm_visbeck_mindepth
double precision gm_visbeck_minval_k
common /gm_params_r/ gm_isopyck, gm_background_k, gm_maxslope,
$gm_kmin_horiz, gm_small_number, gm_slopesqcutoff,
$gm_visbeck_alpha, gm_visbeck_length, gm_visbeck_depth,
$gm_visbeck_mindepth, gm_visbeck_maxslope, gm_visbeck_minval_k,
$gm_visbeck_maxval_k, gm_factrl2dz, gm_factrl2ml, gm_maxtranslay,
$gm_scrit, gm_sd
double precision kuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_uvtensor/ kuz, kvz
double precision kwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_wtensor/ kwx, kwy, kwz
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer myiter
integer mythid
double precision mytime
double precision sigmar(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision sigmax(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision sigmay(1-olx:snx+olx,1-oly:sny+oly,nr)
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision baseslope(1-olx:snx+olx,1-oly:sny+oly)
double precision cspd
double precision dsigmadr(1-olx:snx+olx,1-oly:sny+oly)
double precision dsigmadx(1-olx:snx+olx,1-oly:sny+oly)
double precision dsigmady(1-olx:snx+olx,1-oly:sny+oly)
double precision fcoriloc
double precision htranslay(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer igmkey
integer iq0
integer iq1
integer iq2
integer iq3
integer iq4
integer iq5
integer iq6
integer iq7
integer iq8
integer iq9
integer iqu
integer iqv
integer iqw
integer iqx
integer iqy
integer iqz
integer ir4
integer ir5
integer ir6
integer ir7
integer ir8
integer ir9
integer ira
integer irb
integer irc
integer ird
integer isa
integer isb
integer isc
integer isd
integer ise
integer isf
integer isg
integer ish
integer isi
integer isj
integer isk
integer isl
integer ism
integer isn
integer iso
integer isp
integer isq
integer isr
integer iss
integer ist
integer isu
integer isv
integer isw
integer isx
integer isy
integer isz
integer it0
integer it1
integer it2
integer it3
integer it4
integer it5
integer it6
integer it7
integer itm
integer itn
integer ito
integer itp
integer itq
integer itr
integer its
integer itt
integer itu
integer itv
integer itw
integer itx
integer ity
integer itz
integer j
integer k
double precision kgm_tmp
integer kkey
integer klow_s(1-olx:snx+olx,1-oly:sny+oly)
integer klow_w(1-olx:snx+olx,1-oly:sny+oly)
integer kp1
double precision ldd97_lrhoc(1-olx:snx+olx,1-oly:sny+oly)
double precision ldd97_lrhos(1-olx:snx+olx,1-oly:sny+oly)
double precision ldd97_lrhow(1-olx:snx+olx,1-oly:sny+oly)
double precision locmixlayer(1-olx:snx+olx,1-oly:sny+oly)
double precision lrhoinf
double precision lrhosup
double precision maskp1
integer max1
integer max2
integer max3
double precision reciplambda(1-olx:snx+olx,1-oly:sny+oly)
double precision slopesqr(1-olx:snx+olx,1-oly:sny+oly)
double precision slopex(1-olx:snx+olx,1-oly:sny+oly)
double precision slopey(1-olx:snx+olx,1-oly:sny+oly)
double precision taperfct(1-olx:snx+olx,1-oly:sny+oly)
C**********************************************
C executable statements of routine
C**********************************************
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igmkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
if (gm_taper_scheme .eq. 'ldd97' .or. gm_taper_scheme .eq. 'fm07')
$ then
cspd = 2.d0
lrhoinf = 15000.d0
lrhosup = 1.d+5
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (fcori(i,j,bi,bj) .ne. 0.) then
ldd97_lrhoc(i,j) = cspd/abs(fcori(i,j,bi,bj))
else
ldd97_lrhoc(i,j) = lrhosup
endif
ldd97_lrhoc(i,j) = max(lrhoinf,min(ldd97_lrhoc(i,j),lrhosup)
$)
end do
end do
do j = 1-oly, sny+oly
ldd97_lrhow(1-olx,j) = lrhosup
do i = 1-olx+1, snx+olx
fcoriloc = op5*(fcori(i-1,j,bi,bj)+fcori(i,j,bi,bj))
if (fcoriloc .ne. 0.) then
ldd97_lrhow(i,j) = cspd/abs(fcoriloc)
else
ldd97_lrhow(i,j) = lrhosup
endif
ldd97_lrhow(i,j) = max(lrhoinf,min(ldd97_lrhow(i,j),lrhosup)
$)
end do
end do
do i = 1-olx+1, snx+olx
ldd97_lrhos(i,1-oly) = lrhosup
end do
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
fcoriloc = op5*(fcori(i,j-1,bi,bj)+fcori(i,j,bi,bj))
if (fcoriloc .ne. 0.) then
ldd97_lrhos(i,j) = cspd/abs(fcoriloc)
else
ldd97_lrhos(i,j) = lrhosup
endif
ldd97_lrhos(i,j) = max(lrhoinf,min(ldd97_lrhos(i,j),lrhosup)
$)
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
ldd97_lrhoc(i,j) = 0.d0
ldd97_lrhow(i,j) = 0.d0
ldd97_lrhos(i,j) = 0.d0
end do
end do
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
htranslay(i,j) = r_low(i,j,bi,bj)
baseslope(i,j) = 0.d0
reciplambda(i,j) = 0.d0
locmixlayer(i,j) = 0.d0
end do
end do
if ( .true. ) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
locmixlayer(i,j) = hmixlayer(i,j,bi,bj)
end do
end do
endif
do k = nr, 2, -1
kkey = (igmkey-1)*nr+k
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
slopex(i,j) = 0.d0
slopey(i,j) = 0.d0
dsigmadx(i,j) = 0.d0
dsigmady(i,j) = 0.d0
dsigmadr(i,j) = 0.d0
slopesqr(i,j) = 0.d0
kwx(i,j,k,bi,bj) = 0.d0
kwy(i,j,k,bi,bj) = 0.d0
kwz(i,j,k,bi,bj) = 0.d0
kux(i,j,k,bi,bj) = 0.d0
kvy(i,j,k,bi,bj) = 0.d0
kuz(i,j,k,bi,bj) = 0.d0
kvz(i,j,k,bi,bj) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
dsigmadx(i,j) = op25*(sigmax(i+1,j,k-1)+sigmax(i,j,k-1)+
$sigmax(i+1,j,k)+sigmax(i,j,k))*maskc(i,j,k,bi,bj)
dsigmady(i,j) = op25*(sigmay(i,j+1,k-1)+sigmay(i,j,k-1)+
$sigmay(i,j+1,k)+sigmay(i,j,k))*maskc(i,j,k,bi,bj)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
dsigmadr(i,j) = sigmar(i,j,k)
end do
end do
do it7 = 1-oly, sny+oly
do it6 = 1-olx, snx+olx
comlev1_bibj_k_dsigmadx_1h(it6,it7,kkey) = dsigmadx(it6,it7)
end do
end do
do it5 = 1-oly, sny+oly
do it4 = 1-olx, snx+olx
comlev1_bibj_k_dsigmady_2h(it4,it5,kkey) = dsigmady(it4,it5)
end do
end do
do it3 = 1-oly, sny+oly
do it2 = 1-olx, snx+olx
comlev1_bibj_k_dsigmadr_3h(it2,it3,kkey) = dsigmadr(it2,it3)
end do
end do
do it1 = 1-oly, sny+oly
do it0 = 1-olx, snx+olx
comlev1_bibj_k_baseslope_4h(it0,it1,kkey) = baseslope(it0,
$it1)
end do
end do
do itz = 1-oly, sny+oly
do ity = 1-olx, snx+olx
comlev1_bibj_k_htranslay_5h(ity,itz,kkey) = htranslay(ity,
$itz)
end do
end do
do itx = 1-oly, sny+oly
do itw = 1-olx, snx+olx
comlev1_bibj_k_reciplambda_6h(itw,itx,kkey) = reciplambda(
$itw,itx)
end do
end do
call gmredi_slope_limit( slopex,slopey,slopesqr,taperfct,
$htranslay,baseslope,reciplambda,dsigmadr,dsigmadx,dsigmady,
$ldd97_lrhoc,locmixlayer,rf,klowc(1-olx,1-oly,bi,bj),k,bi,bj,
$mytime,myiter,mythid )
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
slopex(i,j) = slopex(i,j)*maskc(i,j,k,bi,bj)
slopey(i,j) = slopey(i,j)*maskc(i,j,k,bi,bj)
slopesqr(i,j) = slopesqr(i,j)*maskc(i,j,k,bi,bj)
end do
end do
do itv = 1-oly, sny+oly
do itu = 1-olx, snx+olx
comlev1_bibj_k_slopex_7h(itu,itv,kkey) = slopex(itu,itv)
end do
end do
do itt = 1-oly, sny+oly
do its = 1-olx, snx+olx
comlev1_bibj_k_slopey_8h(its,itt,kkey) = slopey(its,itt)
end do
end do
do itr = 1-oly, sny+oly
do itq = 1-olx, snx+olx
comlev1_bibj_k_slopesqr_9h(itq,itr,kkey) = slopesqr(itq,itr)
end do
end do
do itp = 1-oly, sny+oly
do ito = 1-olx, snx+olx
comlev1_bibj_k_dsigmadr_10h(ito,itp,kkey) = dsigmadr(ito,
$itp)
end do
end do
do itn = 1-oly, sny+oly
do itm = 1-olx, snx+olx
comlev1_bibj_k_taperfct_11h(itm,itn,kkey) = taperfct(itm,
$itn)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kwx(i,j,k,bi,bj) = slopex(i,j)*taperfct(i,j)
kwy(i,j,k,bi,bj) = slopey(i,j)*taperfct(i,j)
kwz(i,j,k,bi,bj) = slopesqr(i,j)*taperfct(i,j)
end do
end do
end do
do k = 1, nr
kkey = (igmkey-1)*nr+k
do isz = 1-oly, sny+oly
do isy = 1-olx, snx+olx
comlev1_bibj_k_kwx_12h(isy,isz,kkey) = kwx(isy,isz,k,bi,bj)
end do
end do
do isx = 1-oly, sny+oly
do isw = 1-olx, snx+olx
comlev1_bibj_k_kwy_13h(isw,isx,kkey) = kwy(isw,isx,k,bi,bj)
end do
end do
do isv = 1-oly, sny+oly
do isu = 1-olx, snx+olx
comlev1_bibj_k_kwz_14h(isu,isv,kkey) = kwz(isu,isv,k,bi,bj)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kgm_tmp = gm_isopyck+gm_skewflx*gm_background_k
kwx(i,j,k,bi,bj) = kgm_tmp*kwx(i,j,k,bi,bj)
kwy(i,j,k,bi,bj) = kgm_tmp*kwy(i,j,k,bi,bj)
kwz(i,j,k,bi,bj) = gm_isopyck*kwz(i,j,k,bi,bj)
end do
end do
end do
if ( .true. ) then
do j = 1-oly, sny+oly
do i = 2-olx, snx+olx
locmixlayer(i,j) = (hmixlayer(i-1,j,bi,bj)+hmixlayer(i,j,bi,
$bj))*op5
end do
end do
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
htranslay(i,j) = 0.
baseslope(i,j) = 0.
reciplambda(i,j) = 0.
end do
do i = 2-olx, snx+olx
htranslay(i,j) = max(r_low(i-1,j,bi,bj),r_low(i,j,bi,bj))
end do
end do
do k = nr, 1, -1
kp1 = min(nr,k+1)
maskp1 = 1.d0
if (k .ge. nr) then
maskp1 = 0.d0
endif
kkey = (igmkey-1)*nr+k
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
dsigmadx(i,j) = sigmax(i,j,k)*maskw(i,j,k,bi,bj)
dsigmady(i,j) = op25*(sigmay(i-1,j+1,k)+sigmay(i,j+1,k)+
$sigmay(i-1,j,k)+sigmay(i,j,k))*maskw(i,j,k,bi,bj)
dsigmadr(i,j) = op25*(sigmar(i-1,j,k)+sigmar(i,j,k)+(sigmar(
$i-1,j,kp1)+sigmar(i,j,kp1))*maskp1)*maskw(i,j,k,bi,bj)
end do
end do
do ist = 1-oly, sny+oly
do iss = 1-olx, snx+olx
comlev1_bibj_k_slopesqr_15h(iss,ist,kkey) = slopesqr(iss,
$ist)
end do
end do
do isr = 1-oly, sny+oly
do isq = 1-olx, snx+olx
comlev1_bibj_k_dsigmadx_16h(isq,isr,kkey) = dsigmadx(isq,
$isr)
end do
end do
do isp = 1-oly, sny+oly
do iso = 1-olx, snx+olx
comlev1_bibj_k_dsigmady_17h(iso,isp,kkey) = dsigmady(iso,
$isp)
end do
end do
do isn = 1-oly, sny+oly
do ism = 1-olx, snx+olx
comlev1_bibj_k_dsigmadr_18h(ism,isn,kkey) = dsigmadr(ism,
$isn)
end do
end do
do isl = 1-oly, sny+oly
do isk = 1-olx, snx+olx
comlev1_bibj_k_locmixlayer_19h(isk,isl,kkey) = locmixlayer(
$isk,isl)
end do
end do
do isj = 1-oly, sny+oly
do isi = 1-olx, snx+olx
comlev1_bibj_k_baseslope_20h(isi,isj,kkey) = baseslope(isi,
$isj)
end do
end do
do ish = 1-oly, sny+oly
do isg = 1-olx, snx+olx
comlev1_bibj_k_htranslay_21h(isg,ish,kkey) = htranslay(isg,
$ish)
end do
end do
do isf = 1-oly, sny+oly
do ise = 1-olx, snx+olx
comlev1_bibj_k_reciplambda_22h(ise,isf,kkey) = reciplambda(
$ise,isf)
end do
end do
call gmredi_slope_limit( slopex,slopey,slopesqr,taperfct,
$htranslay,baseslope,reciplambda,dsigmadr,dsigmadx,dsigmady,
$ldd97_lrhow,locmixlayer,rc,klow_w,k,bi,bj,mytime,myiter,mythid )
do isd = 1-oly, sny+oly
do isc = 1-olx, snx+olx
comlev1_bibj_k_slopesqr_23h(isc,isd,kkey) = slopesqr(isc,
$isd)
end do
end do
do isb = 1-oly, sny+oly
do isa = 1-olx, snx+olx
comlev1_bibj_k_taperfct_24h(isa,isb,kkey) = taperfct(isa,
$isb)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kux(i,j,k,bi,bj) = gm_isopyck*taperfct(i,j)
end do
end do
do ir9 = 1-oly, sny+oly
do ir8 = 1-olx, snx+olx
comlev1_bibj_k_kux_25h(ir8,ir9,kkey) = kux(ir8,ir9,k,bi,bj)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kux(i,j,k,bi,bj) = max(kux(i,j,k,bi,bj),gm_kmin_horiz)
end do
end do
do ir7 = 1-oly, sny+oly
do ir6 = 1-olx, snx+olx
comlev1_bibj_k_slopex_26h(ir6,ir7,kkey) = slopex(ir6,ir7)
end do
end do
do ir5 = 1-oly, sny+oly
do ir4 = 1-olx, snx+olx
comlev1_bibj_k_taperfct_27h(ir4,ir5,kkey) = taperfct(ir4,
$ir5)
end do
end do
if (gm_extradiag) then
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kuz(i,j,k,bi,bj) = (gm_isopyck-gm_skewflx*gm_background_k)
$*slopex(i,j)*taperfct(i,j)
end do
end do
endif
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
htranslay(i,j) = 0.
baseslope(i,j) = 0.
reciplambda(i,j) = 0.
end do
end do
do j = 2-oly, sny+oly
do i = 1-olx, snx+olx
htranslay(i,j) = max(r_low(i,j-1,bi,bj),r_low(i,j,bi,bj))
end do
end do
do k = nr, 1, -1
kp1 = min(nr,k+1)
maskp1 = 1.d0
if (k .ge. nr) then
maskp1 = 0.d0
endif
kkey = (igmkey-1)*nr+k
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
dsigmadx(i,j) = op25*(sigmax(i,j,k)+sigmax(i+1,j,k)+sigmax(
$i,j-1,k)+sigmax(i+1,j-1,k))*masks(i,j,k,bi,bj)
dsigmady(i,j) = sigmay(i,j,k)*masks(i,j,k,bi,bj)
dsigmadr(i,j) = op25*(sigmar(i,j-1,k)+sigmar(i,j,k)+(sigmar(
$i,j-1,kp1)+sigmar(i,j,kp1))*maskp1)*masks(i,j,k,bi,bj)
end do
end do
do ird = 1-oly, sny+oly
do irc = 1-olx, snx+olx
comlev1_bibj_k_dsigmadx_28h(irc,ird,kkey) = dsigmadx(irc,
$ird)
end do
end do
do irb = 1-oly, sny+oly
do ira = 1-olx, snx+olx
comlev1_bibj_k_dsigmady_29h(ira,irb,kkey) = dsigmady(ira,
$irb)
end do
end do
do iq9 = 1-oly, sny+oly
do iq8 = 1-olx, snx+olx
comlev1_bibj_k_dsigmadr_30h(iq8,iq9,kkey) = dsigmadr(iq8,
$iq9)
end do
end do
do iq7 = 1-oly, sny+oly
do iq6 = 1-olx, snx+olx
comlev1_bibj_k_baseslope_31h(iq6,iq7,kkey) = baseslope(iq6,
$iq7)
end do
end do
do iq5 = 1-oly, sny+oly
do iq4 = 1-olx, snx+olx
comlev1_bibj_k_htranslay_32h(iq4,iq5,kkey) = htranslay(iq4,
$iq5)
end do
end do
do iq3 = 1-oly, sny+oly
do iq2 = 1-olx, snx+olx
comlev1_bibj_k_reciplambda_33h(iq2,iq3,kkey) = reciplambda(
$iq2,iq3)
end do
end do
call gmredi_slope_limit( slopex,slopey,slopesqr,taperfct,
$htranslay,baseslope,reciplambda,dsigmadr,dsigmadx,dsigmady,
$ldd97_lrhos,locmixlayer,rc,klow_s,k,bi,bj,mytime,myiter,mythid )
do iq1 = 1-oly, sny+oly
do iq0 = 1-olx, snx+olx
comlev1_bibj_k_taperfct_34h(iq0,iq1,kkey) = taperfct(iq0,
$iq1)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kvy(i,j,k,bi,bj) = gm_isopyck*taperfct(i,j)
end do
end do
do iqz = 1-oly, sny+oly
do iqy = 1-olx, snx+olx
comlev1_bibj_k_kvy_35h(iqy,iqz,kkey) = kvy(iqy,iqz,k,bi,bj)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kvy(i,j,k,bi,bj) = max(kvy(i,j,k,bi,bj),gm_kmin_horiz)
end do
end do
do iqx = 1-oly, sny+oly
do iqw = 1-olx, snx+olx
comlev1_bibj_k_slopey_36h(iqw,iqx,kkey) = slopey(iqw,iqx)
end do
end do
do iqv = 1-oly, sny+oly
do iqu = 1-olx, snx+olx
comlev1_bibj_k_taperfct_37h(iqu,iqv,kkey) = taperfct(iqu,
$iqv)
end do
end do
if (gm_extradiag) then
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
kvz(i,j,k,bi,bj) = (gm_isopyck-gm_skewflx*gm_background_k)
$*slopey(i,j)*taperfct(i,j)
end do
end do
endif
end do
end
subroutine adgmredi_calc_tensor_dummy( bi, bj )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adkwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_wtensor/ adkwx, adkwy, adkwz
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer k
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do k = 1, nr
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adkwz(i,j,k,bi,bj) = 0.d0
adkwy(i,j,k,bi,bj) = 0.d0
adkwx(i,j,k,bi,bj) = 0.d0
end do
end do
end do
end
subroutine adgmredi_rtransport( imin, imax, jmin, jmax, bi, bj, k,
$ tracer, adtracer, traceridentity, addf )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_tr1
parameter ( gad_tr1 = 3 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adkwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_wtensor/ adkwx, adkwy, adkwz
double precision kwx(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kwz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_wtensor/ kwx, kwy, kwz
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
C==============================================
C declare arguments
C==============================================
double precision addf(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
C==============================================
C declare local variables
C==============================================
double precision addtdx(1-olx:snx+olx,1-oly:sny+oly)
double precision addtdy(1-olx:snx+olx,1-oly:sny+oly)
double precision dtdx(1-olx:snx+olx,1-oly:sny+oly)
double precision dtdy(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addtdx(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addtdy(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usegmredi .and. k .gt. 1) then
do j = jmin, jmax
do i = imin, imax
dtdx(i,j) = op5*(op5*(maskw(i+1,j,k,bi,bj)*recip_dxc(i+1,j,
$bi,bj)*(tracer(i+1,j,k,bi,bj)-tracer(i,j,k,bi,bj))+maskw(i,j,k,bi,
$bj)*recip_dxc(i,j,bi,bj)*(tracer(i,j,k,bi,bj)-tracer(i-1,j,k,bi,
$bj)))+op5*(maskw(i+1,j,k-1,bi,bj)*recip_dxc(i+1,j,bi,bj)*(tracer(
$i+1,j,k-1,bi,bj)-tracer(i,j,k-1,bi,bj))+maskw(i,j,k-1,bi,bj)*
$recip_dxc(i,j,bi,bj)*(tracer(i,j,k-1,bi,bj)-tracer(i-1,j,k-1,bi,
$bj))))
dtdy(i,j) = op5*(op5*(masks(i,j,k,bi,bj)*recip_dyc(i,j,bi,
$bj)*(tracer(i,j,k,bi,bj)-tracer(i,j-1,k,bi,bj))+masks(i,j+1,k,bi,
$bj)*recip_dyc(i,j+1,bi,bj)*(tracer(i,j+1,k,bi,bj)-tracer(i,j,k,bi,
$bj)))+op5*(masks(i,j,k-1,bi,bj)*recip_dyc(i,j,bi,bj)*(tracer(i,j,
$k-1,bi,bj)-tracer(i,j-1,k-1,bi,bj))+masks(i,j+1,k-1,bi,bj)*
$recip_dyc(i,j+1,bi,bj)*(tracer(i,j+1,k-1,bi,bj)-tracer(i,j,k-1,bi,
$bj))))
end do
end do
do j = jmin, jmax
do i = imin, imax
if (traceridentity .lt. gad_tr1) then
addtdx(i,j) = addtdx(i,j)-addf(i,j)*ra(i,j,bi,bj)*kwx(i,j,
$k,bi,bj)
addtdy(i,j) = addtdy(i,j)-addf(i,j)*ra(i,j,bi,bj)*kwy(i,j,
$k,bi,bj)
adkwx(i,j,k,bi,bj) = adkwx(i,j,k,bi,bj)-addf(i,j)*ra(i,j,
$bi,bj)*dtdx(i,j)
adkwy(i,j,k,bi,bj) = adkwy(i,j,k,bi,bj)-addf(i,j)*ra(i,j,
$bi,bj)*dtdy(i,j)
else
addtdx(i,j) = addtdx(i,j)-addf(i,j)*ra(i,j,bi,bj)*kwx(i,j,
$k,bi,bj)
addtdy(i,j) = addtdy(i,j)-addf(i,j)*ra(i,j,bi,bj)*kwy(i,j,
$k,bi,bj)
adkwx(i,j,k,bi,bj) = adkwx(i,j,k,bi,bj)-addf(i,j)*ra(i,j,
$bi,bj)*dtdx(i,j)
adkwy(i,j,k,bi,bj) = adkwy(i,j,k,bi,bj)-addf(i,j)*ra(i,j,
$bi,bj)*dtdy(i,j)
endif
end do
end do
do j = jmin, jmax
do i = imin, imax
adtracer(i,j-1,k-1,bi,bj) = adtracer(i,j-1,k-1,bi,bj)-
$addtdy(i,j)*op5*op5*masks(i,j,k-1,bi,bj)*recip_dyc(i,j,bi,bj)
adtracer(i,j-1,k,bi,bj) = adtracer(i,j-1,k,bi,bj)-addtdy(i,
$j)*op5*op5*masks(i,j,k,bi,bj)*recip_dyc(i,j,bi,bj)
adtracer(i,j+1,k-1,bi,bj) = adtracer(i,j+1,k-1,bi,bj)+
$addtdy(i,j)*op5*op5*masks(i,j+1,k-1,bi,bj)*recip_dyc(i,j+1,bi,bj)
adtracer(i,j+1,k,bi,bj) = adtracer(i,j+1,k,bi,bj)+addtdy(i,
$j)*op5*op5*masks(i,j+1,k,bi,bj)*recip_dyc(i,j+1,bi,bj)
adtracer(i,j,k-1,bi,bj) = adtracer(i,j,k-1,bi,bj)+addtdy(i,
$j)*op5*op5*(masks(i,j,k-1,bi,bj)*recip_dyc(i,j,bi,bj)-masks(i,j+1,
$k-1,bi,bj)*recip_dyc(i,j+1,bi,bj))
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+addtdy(i,j)*
$op5*op5*(masks(i,j,k,bi,bj)*recip_dyc(i,j,bi,bj)-masks(i,j+1,k,bi,
$bj)*recip_dyc(i,j+1,bi,bj))
addtdy(i,j) = 0.d0
adtracer(i-1,j,k-1,bi,bj) = adtracer(i-1,j,k-1,bi,bj)-
$addtdx(i,j)*op5*op5*maskw(i,j,k-1,bi,bj)*recip_dxc(i,j,bi,bj)
adtracer(i+1,j,k-1,bi,bj) = adtracer(i+1,j,k-1,bi,bj)+
$addtdx(i,j)*op5*op5*maskw(i+1,j,k-1,bi,bj)*recip_dxc(i+1,j,bi,bj)
adtracer(i,j,k-1,bi,bj) = adtracer(i,j,k-1,bi,bj)+addtdx(i,
$j)*op5*op5*((-(maskw(i+1,j,k-1,bi,bj)*recip_dxc(i+1,j,bi,bj)))+
$maskw(i,j,k-1,bi,bj)*recip_dxc(i,j,bi,bj))
adtracer(i-1,j,k,bi,bj) = adtracer(i-1,j,k,bi,bj)-addtdx(i,
$j)*op5*op5*maskw(i,j,k,bi,bj)*recip_dxc(i,j,bi,bj)
adtracer(i+1,j,k,bi,bj) = adtracer(i+1,j,k,bi,bj)+addtdx(i,
$j)*op5*op5*maskw(i+1,j,k,bi,bj)*recip_dxc(i+1,j,bi,bj)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+addtdx(i,j)*
$op5*op5*((-(maskw(i+1,j,k,bi,bj)*recip_dxc(i+1,j,bi,bj)))+maskw(i,
$j,k,bi,bj)*recip_dxc(i,j,bi,bj))
addtdx(i,j) = 0.d0
end do
end do
endif
end
subroutine adgmredi_slope_limit( adslopex, adslopey, adslopesqr,
$adtaperfct, dsigmadr, addsigmadr, dsigmadx, addsigmadx, dsigmady,
$addsigmady, lrho, depthz, k )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
double precision pi
parameter ( pi = 3.1415926535898d0 )
double precision fpi
parameter ( fpi = pi )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
character*(40) gm_taper_scheme
common /gm_params_c/ gm_taper_scheme
double precision gm_background_k
double precision gm_factrl2dz
double precision gm_factrl2ml
double precision gm_isopyck
double precision gm_kmin_horiz
double precision gm_maxslope
double precision gm_maxtranslay
double precision gm_scrit
double precision gm_sd
double precision gm_slopesqcutoff
double precision gm_small_number
double precision gm_visbeck_alpha
double precision gm_visbeck_depth
double precision gm_visbeck_length
double precision gm_visbeck_maxslope
double precision gm_visbeck_maxval_k
double precision gm_visbeck_mindepth
double precision gm_visbeck_minval_k
common /gm_params_r/ gm_isopyck, gm_background_k, gm_maxslope,
$gm_kmin_horiz, gm_small_number, gm_slopesqcutoff,
$gm_visbeck_alpha, gm_visbeck_length, gm_visbeck_depth,
$gm_visbeck_mindepth, gm_visbeck_maxslope, gm_visbeck_minval_k,
$gm_visbeck_maxval_k, gm_factrl2dz, gm_factrl2ml, gm_maxtranslay,
$gm_scrit, gm_sd
C==============================================
C declare arguments
C==============================================
double precision addsigmadr(1-olx:snx+olx,1-oly:sny+oly)
double precision addsigmadx(1-olx:snx+olx,1-oly:sny+oly)
double precision addsigmady(1-olx:snx+olx,1-oly:sny+oly)
double precision adslopesqr(1-olx:snx+olx,1-oly:sny+oly)
double precision adslopex(1-olx:snx+olx,1-oly:sny+oly)
double precision adslopey(1-olx:snx+olx,1-oly:sny+oly)
double precision adtaperfct(1-olx:snx+olx,1-oly:sny+oly)
double precision depthz(*)
double precision dsigmadr(1-olx:snx+olx,1-oly:sny+oly)
double precision dsigmadx(1-olx:snx+olx,1-oly:sny+oly)
double precision dsigmady(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision lrho(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision addrdsigmaltd(1-olx:snx+olx,1-oly:sny+oly)
double precision adf1
double precision adf2
double precision adrnondim
double precision adsmod
double precision drdsigmaltd(1-olx:snx+olx,1-oly:sny+oly)
double precision dsigmadrh(1-olx:snx+olx,1-oly:sny+oly)
double precision f1
double precision f2
double precision gm_bigslope
integer i
integer ip1
integer ip2
integer j
double precision maxslopesqr
double precision rnondim
double precision slopesqr(1-olx:snx+olx,1-oly:sny+oly)
double precision slopex(1-olx:snx+olx,1-oly:sny+oly)
double precision slopey(1-olx:snx+olx,1-oly:sny+oly)
double precision smod
C----------------------------------------------
C SAVE REQUIRED INPUT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadrh(ip1,ip2) = dsigmadr(ip1,ip2)
end do
end do
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addrdsigmaltd(ip1,ip2) = 0.d0
end do
end do
adf1 = 0.d0
adf2 = 0.d0
adrnondim = 0.d0
adsmod = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
gm_bigslope = 100.d0
if (gm_taper_scheme .eq. 'orig' .or. gm_taper_scheme .eq.
$'clipping') then
else if (gm_taper_scheme .eq. 'fm07') then
else if (gm_taper_scheme .eq. 'ac02') then
else
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
if (dsigmadr(i,j) .ne. 0.) then
if (dsigmadr(i,j) .ge. (-gm_small_number)) then
dsigmadr(i,j) = -gm_small_number
endif
endif
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
if (dsigmadr(i,j) .eq. 0.) then
if (dsigmadx(i,j) .ne. 0.) then
slopex(i,j) = sign(gm_bigslope,dsigmadx(i,j))
else
slopex(i,j) = 0.d0
endif
if (dsigmady(i,j) .ne. 0.) then
slopey(i,j) = sign(gm_bigslope,dsigmady(i,j))
else
slopey(i,j) = 0.d0
endif
else
drdsigmaltd(i,j) = 1.d0/dsigmadr(i,j)
slopex(i,j) = -(dsigmadx(i,j)*drdsigmaltd(i,j))
slopey(i,j) = -(dsigmady(i,j)*drdsigmaltd(i,j))
endif
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
slopesqr(i,j) = slopex(i,j)*slopex(i,j)+slopey(i,j)*slopey(
$i,j)
if (slopesqr(i,j) .gt. gm_slopesqcutoff) then
slopesqr(i,j) = gm_slopesqcutoff
endif
end do
end do
if (gm_taper_scheme .eq. 'linear') then
maxslopesqr = gm_maxslope*gm_maxslope
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
if (slopesqr(i,j) .eq. 0.) then
adtaperfct(i,j) = 0.d0
else if (slopesqr(i,j) .gt. maxslopesqr .and. slopesqr(i,
$j) .lt. gm_slopesqcutoff) then
adslopesqr(i,j) = adslopesqr(i,j)*(0.5+sign(0.5d0,
$gm_bigslope*gm_bigslope-slopesqr(i,j)))
adslopesqr(i,j) = adslopesqr(i,j)-adtaperfct(i,j)*1./(
$2.*sqrt(maxslopesqr/slopesqr(i,j)))*(maxslopesqr/(slopesqr(i,j)*
$slopesqr(i,j)))
adtaperfct(i,j) = 0.d0
endif
end do
end do
else if (gm_taper_scheme .eq. 'gkw91') then
maxslopesqr = gm_maxslope*gm_maxslope
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
if (slopesqr(i,j) .eq. 0.) then
adtaperfct(i,j) = 0.d0
else if (slopesqr(i,j) .gt. maxslopesqr .and. slopesqr(i,
$j) .lt. gm_slopesqcutoff) then
adslopesqr(i,j) = adslopesqr(i,j)-adtaperfct(i,j)*(
$maxslopesqr/(slopesqr(i,j)*slopesqr(i,j)))
adtaperfct(i,j) = 0.d0
endif
end do
end do
else if (gm_taper_scheme .eq. 'dm95') then
do j = sny+oly-1, 1-oly+1, -1
adsmod = 0.d0
do i = snx+olx-1, 1-olx+1, -1
adsmod = 0.d0
if (slopesqr(i,j) .eq. 0.) then
adtaperfct(i,j) = 0.d0
else if (slopesqr(i,j) .lt. gm_slopesqcutoff) then
smod = sqrt(slopesqr(i,j))
adsmod = adsmod-adtaperfct(i,j)*op5*(1.-tanh((gm_scrit-
$smod)/gm_sd)**2)/gm_sd
adtaperfct(i,j) = 0.d0
adslopesqr(i,j) = adslopesqr(i,j)+adsmod*(1./(2.*sqrt(
$slopesqr(i,j))))
adsmod = 0.d0
endif
end do
end do
else if (gm_taper_scheme .eq. 'ldd97') then
do j = sny+oly-1, 1-oly+1, -1
do i = snx+olx-1, 1-olx+1, -1
if (slopesqr(i,j) .eq. 0.) then
adtaperfct(i,j) = 0.d0
else if (slopesqr(i,j) .lt. gm_slopesqcutoff) then
smod = sqrt(slopesqr(i,j))
f1 = op5*(1.d0+tanh((gm_scrit-smod)/gm_sd))
rnondim = -(depthz(k)/(lrho(i,j)*smod))
if (rnondim .ge. 1.d0) then
f2 = 1.d0
else
f2 = op5*(1.d0+sin(fpi*(rnondim-op5)))
endif
adf1 = adf1+adtaperfct(i,j)*f2
adf2 = adf2+adtaperfct(i,j)*f1
adtaperfct(i,j) = 0.d0
if (rnondim .ge. 1.d0) then
adf2 = 0.d0
else
adrnondim = adrnondim+adf2*op5*fpi*cos(fpi*(rnondim-
$op5))
adf2 = 0.d0
endif
adsmod = adsmod+adrnondim*(depthz(k)*lrho(i,j)/(lrho(i,
$j)*smod*lrho(i,j)*smod))
adrnondim = 0.d0
adsmod = adsmod-adf1*op5*(1.-tanh((gm_scrit-smod)/gm_sd)
$**2)/gm_sd
adf1 = 0.d0
adslopesqr(i,j) = adslopesqr(i,j)+adsmod*(1./(2.*sqrt(
$slopesqr(i,j))))
adsmod = 0.d0
endif
end do
end do
endif
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
slopesqr(i,j) = slopex(i,j)*slopex(i,j)+slopey(i,j)*slopey(
$i,j)
if (slopesqr(i,j) .gt. gm_slopesqcutoff) then
adtaperfct(i,j) = 0.d0
adslopesqr(i,j) = 0.d0
endif
adtaperfct(i,j) = 0.d0
adslopex(i,j) = adslopex(i,j)+2*adslopesqr(i,j)*slopex(i,j)
adslopey(i,j) = adslopey(i,j)+2*adslopesqr(i,j)*slopey(i,j)
adslopesqr(i,j) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
if (dsigmadr(i,j) .eq. 0.) then
if (dsigmady(i,j) .ne. 0.) then
adslopey(i,j) = 0.d0
else
adslopey(i,j) = 0.d0
endif
if (dsigmadx(i,j) .ne. 0.) then
adslopex(i,j) = 0.d0
else
adslopex(i,j) = 0.d0
endif
else
drdsigmaltd(i,j) = 1.d0/dsigmadr(i,j)
addrdsigmaltd(i,j) = addrdsigmaltd(i,j)-adslopey(i,j)*
$dsigmady(i,j)
addsigmady(i,j) = addsigmady(i,j)-adslopey(i,j)*
$drdsigmaltd(i,j)
adslopey(i,j) = 0.d0
addrdsigmaltd(i,j) = addrdsigmaltd(i,j)-adslopex(i,j)*
$dsigmadx(i,j)
addsigmadx(i,j) = addsigmadx(i,j)-adslopex(i,j)*
$drdsigmaltd(i,j)
adslopex(i,j) = 0.d0
addsigmadr(i,j) = addsigmadr(i,j)-addrdsigmaltd(i,j)/(
$dsigmadr(i,j)*dsigmadr(i,j))
addrdsigmaltd(i,j) = 0.d0
endif
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
dsigmadr(ip1,ip2) = dsigmadrh(ip1,ip2)
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
if (dsigmadr(i,j) .ne. 0.) then
if (dsigmadr(i,j) .ge. (-gm_small_number)) then
addsigmadr(i,j) = 0.d0
endif
endif
end do
end do
endif
C----------------------------------------------
C FREE DYNAMIC MEMORY
C----------------------------------------------
end
subroutine adgmredi_xtransport( imin, imax, jmin, jmax, bi, bj, k,
$ xa, tracer, adtracer, traceridentity, addf, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer maxpass
parameter ( maxpass = 2 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adkux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_hortensor/ adkux, adkvy
double precision adkuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_uvtensor/ adkuz, adkvz
real*8 comlev1_gmredi_k_gad_kux_1h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkux/ comlev1_gmredi_k_gad_kux_1h
real*8 comlev1_gmredi_k_gad_kuz_2h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkuz/ comlev1_gmredi_k_gad_kuz_2h
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision kux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_hortensor/ kux, kvy
logical gm_advform
logical gm_advseparate
logical gm_extradiag
logical gm_inmomasstress
logical gm_mdsio
logical gm_mnc
common /gm_params_l/ gm_advform, gm_advseparate, gm_extradiag,
$gm_mnc, gm_mdsio, gm_inmomasstress
double precision kuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_uvtensor/ kuz, kvz
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
double precision addf(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
integer mythid
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision addtdz(1-olx:snx+olx,1-oly:sny+oly)
double precision dtdz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer igadkey
integer ip1
integer ip2
integer j
integer kkey
integer km1
integer kp1
integer max0
integer max1
integer max2
integer max3
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addtdz(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
act0 = traceridentity-1
max0 = maxpass
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igadkey = act0+1+act1*max0+act2*max0*max1+act3*max0*max1*max2+
$act4*max0*max1*max2*max3
kkey = (igadkey-1)*nr+k
if (usegmredi) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kux(ip1,ip2,k,bi,bj) = comlev1_gmredi_k_gad_kux_1h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kuz(ip1,ip2,k,bi,bj) = comlev1_gmredi_k_gad_kuz_2h(ip1,ip2,
$kkey)
end do
end do
if (gm_extradiag) then
km1 = max(k-1,1)
kp1 = min(k+1,nr)
do j = jmin, jmax
do i = imin, imax
dtdz(i,j) = op5*(op5*recip_drc(k)*(maskc(i-1,j,k,bi,bj)*(
$tracer(i-1,j,km1,bi,bj)-tracer(i-1,j,k,bi,bj))+maskc(i,j,k,bi,bj)*
$(tracer(i,j,km1,bi,bj)-tracer(i,j,k,bi,bj)))+op5*recip_drc(kp1)*(
$maskc(i-1,j,kp1,bi,bj)*(tracer(i-1,j,k,bi,bj)-tracer(i-1,j,kp1,bi,
$bj))+maskc(i,j,kp1,bi,bj)*(tracer(i,j,k,bi,bj)-tracer(i,j,kp1,bi,
$bj))))
end do
end do
do j = jmin, jmax
do i = imin, imax
addtdz(i,j) = addtdz(i,j)-addf(i,j)*xa(i,j)*kuz(i,j,k,bi,
$bj)
adkuz(i,j,k,bi,bj) = adkuz(i,j,k,bi,bj)-addf(i,j)*xa(i,j)*
$dtdz(i,j)
end do
end do
do j = jmin, jmax
do i = imin, imax
adtracer(i-1,j,k,bi,bj) = adtracer(i-1,j,k,bi,bj)+addtdz(
$i,j)*op5*((-(op5*recip_drc(k)*maskc(i-1,j,k,bi,bj)))+op5*
$recip_drc(kp1)*maskc(i-1,j,kp1,bi,bj))
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+addtdz(i,j)*
$op5*((-(op5*recip_drc(k)*maskc(i,j,k,bi,bj)))+op5*recip_drc(kp1)*
$maskc(i,j,kp1,bi,bj))
adtracer(i-1,j,km1,bi,bj) = adtracer(i-1,j,km1,bi,bj)+
$addtdz(i,j)*op5*op5*recip_drc(k)*maskc(i-1,j,k,bi,bj)
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+addtdz(
$i,j)*op5*op5*recip_drc(k)*maskc(i,j,k,bi,bj)
adtracer(i-1,j,kp1,bi,bj) = adtracer(i-1,j,kp1,bi,bj)-
$addtdz(i,j)*op5*op5*recip_drc(kp1)*maskc(i-1,j,kp1,bi,bj)
adtracer(i,j,kp1,bi,bj) = adtracer(i,j,kp1,bi,bj)-addtdz(
$i,j)*op5*op5*recip_drc(kp1)*maskc(i,j,kp1,bi,bj)
addtdz(i,j) = 0.d0
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
adkux(i,j,k,bi,bj) = adkux(i,j,k,bi,bj)-addf(i,j)*xa(i,j)*
$recip_dxc(i,j,bi,bj)*(tracer(i,j,k,bi,bj)-tracer(i-1,j,k,bi,bj))
adtracer(i-1,j,k,bi,bj) = adtracer(i-1,j,k,bi,bj)+addf(i,j)*
$xa(i,j)*kux(i,j,k,bi,bj)*recip_dxc(i,j,bi,bj)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)-addf(i,j)*xa(
$i,j)*kux(i,j,k,bi,bj)*recip_dxc(i,j,bi,bj)
end do
end do
endif
end
subroutine mdgmredi_xtransport( imin, imax, jmin, jmax, bi, bj, k,
$ xa, tracer, traceridentity, df, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer maxpass
parameter ( maxpass = 2 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_gmredi_k_gad_kux_1h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkux/ comlev1_gmredi_k_gad_kux_1h
real*8 comlev1_gmredi_k_gad_kuz_2h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkuz/ comlev1_gmredi_k_gad_kuz_2h
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision kux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_hortensor/ kux, kvy
logical gm_advform
logical gm_advseparate
logical gm_extradiag
logical gm_inmomasstress
logical gm_mdsio
logical gm_mnc
common /gm_params_l/ gm_advform, gm_advseparate, gm_extradiag,
$gm_mnc, gm_mdsio, gm_inmomasstress
double precision kuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_uvtensor/ kuz, kvz
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
double precision df(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
integer k
integer mythid
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision dtdz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer igadkey
integer iqa
integer iqb
integer iqc
integer iqd
integer j
integer kkey
integer km1
integer kp1
integer max0
integer max1
integer max2
integer max3
C**********************************************
C executable statements of routine
C**********************************************
act0 = traceridentity-1
max0 = maxpass
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igadkey = act0+1+act1*max0+act2*max0*max1+act3*max0*max1*max2+
$act4*max0*max1*max2*max3
kkey = (igadkey-1)*nr+k
if (usegmredi) then
do iqd = 1-oly, sny+oly
do iqc = 1-olx, snx+olx
comlev1_gmredi_k_gad_kux_1h(iqc,iqd,kkey) = kux(iqc,iqd,k,
$bi,bj)
end do
end do
do iqb = 1-oly, sny+oly
do iqa = 1-olx, snx+olx
comlev1_gmredi_k_gad_kuz_2h(iqa,iqb,kkey) = kuz(iqa,iqb,k,
$bi,bj)
end do
end do
do j = jmin, jmax
do i = imin, imax
df(i,j) = df(i,j)-xa(i,j)*kux(i,j,k,bi,bj)*recip_dxc(i,j,bi,
$bj)*(tracer(i,j,k,bi,bj)-tracer(i-1,j,k,bi,bj))
end do
end do
if (gm_extradiag) then
km1 = max(k-1,1)
kp1 = min(k+1,nr)
do j = jmin, jmax
do i = imin, imax
dtdz(i,j) = op5*(op5*recip_drc(k)*(maskc(i-1,j,k,bi,bj)*(
$tracer(i-1,j,km1,bi,bj)-tracer(i-1,j,k,bi,bj))+maskc(i,j,k,bi,bj)*
$(tracer(i,j,km1,bi,bj)-tracer(i,j,k,bi,bj)))+op5*recip_drc(kp1)*(
$maskc(i-1,j,kp1,bi,bj)*(tracer(i-1,j,k,bi,bj)-tracer(i-1,j,kp1,bi,
$bj))+maskc(i,j,kp1,bi,bj)*(tracer(i,j,k,bi,bj)-tracer(i,j,kp1,bi,
$bj))))
end do
end do
do j = jmin, jmax
do i = imin, imax
df(i,j) = df(i,j)-xa(i,j)*kuz(i,j,k,bi,bj)*dtdz(i,j)
end do
end do
endif
endif
end
subroutine adgmredi_ytransport( imin, imax, jmin, jmax, bi, bj, k,
$ ya, tracer, adtracer, traceridentity, addf, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer maxpass
parameter ( maxpass = 2 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adkux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_hortensor/ adkux, adkvy
double precision adkuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /adgm_uvtensor/ adkuz, adkvz
real*8 comlev1_gmredi_k_gad_kvy_3h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkvy/ comlev1_gmredi_k_gad_kvy_3h
real*8 comlev1_gmredi_k_gad_kvz_4h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkvz/ comlev1_gmredi_k_gad_kvz_4h
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision kux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_hortensor/ kux, kvy
logical gm_advform
logical gm_advseparate
logical gm_extradiag
logical gm_inmomasstress
logical gm_mdsio
logical gm_mnc
common /gm_params_l/ gm_advform, gm_advseparate, gm_extradiag,
$gm_mnc, gm_mdsio, gm_inmomasstress
double precision kuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_uvtensor/ kuz, kvz
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
double precision addf(1-olx:snx+olx,1-oly:sny+oly)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
integer mythid
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision addtdz(1-olx:snx+olx,1-oly:sny+oly)
double precision dtdz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer igadkey
integer ip1
integer ip2
integer j
integer kkey
integer km1
integer kp1
integer max0
integer max1
integer max2
integer max3
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addtdz(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
act0 = traceridentity-1
max0 = maxpass
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igadkey = act0+1+act1*max0+act2*max0*max1+act3*max0*max1*max2+
$act4*max0*max1*max2*max3
kkey = (igadkey-1)*nr+k
if (usegmredi) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kvy(ip1,ip2,k,bi,bj) = comlev1_gmredi_k_gad_kvy_3h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kvz(ip1,ip2,k,bi,bj) = comlev1_gmredi_k_gad_kvz_4h(ip1,ip2,
$kkey)
end do
end do
if (gm_extradiag) then
km1 = max(k-1,1)
kp1 = min(k+1,nr)
do j = jmin, jmax
do i = imin, imax
dtdz(i,j) = op5*(op5*recip_drc(k)*(maskc(i,j-1,k,bi,bj)*(
$tracer(i,j-1,km1,bi,bj)-tracer(i,j-1,k,bi,bj))+maskc(i,j,k,bi,bj)*
$(tracer(i,j,km1,bi,bj)-tracer(i,j,k,bi,bj)))+op5*recip_drc(kp1)*(
$maskc(i,j-1,kp1,bi,bj)*(tracer(i,j-1,k,bi,bj)-tracer(i,j-1,kp1,bi,
$bj))+maskc(i,j,kp1,bi,bj)*(tracer(i,j,k,bi,bj)-tracer(i,j,kp1,bi,
$bj))))
end do
end do
do j = jmin, jmax
do i = imin, imax
addtdz(i,j) = addtdz(i,j)-addf(i,j)*ya(i,j)*kvz(i,j,k,bi,
$bj)
adkvz(i,j,k,bi,bj) = adkvz(i,j,k,bi,bj)-addf(i,j)*ya(i,j)*
$dtdz(i,j)
end do
end do
do j = jmin, jmax
do i = imin, imax
adtracer(i,j-1,k,bi,bj) = adtracer(i,j-1,k,bi,bj)+addtdz(
$i,j)*op5*((-(op5*recip_drc(k)*maskc(i,j-1,k,bi,bj)))+op5*
$recip_drc(kp1)*maskc(i,j-1,kp1,bi,bj))
adtracer(i,j-1,km1,bi,bj) = adtracer(i,j-1,km1,bi,bj)+
$addtdz(i,j)*op5*op5*recip_drc(k)*maskc(i,j-1,k,bi,bj)
adtracer(i,j-1,kp1,bi,bj) = adtracer(i,j-1,kp1,bi,bj)-
$addtdz(i,j)*op5*op5*recip_drc(kp1)*maskc(i,j-1,kp1,bi,bj)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+addtdz(i,j)*
$op5*((-(op5*recip_drc(k)*maskc(i,j,k,bi,bj)))+op5*recip_drc(kp1)*
$maskc(i,j,kp1,bi,bj))
adtracer(i,j,km1,bi,bj) = adtracer(i,j,km1,bi,bj)+addtdz(
$i,j)*op5*op5*recip_drc(k)*maskc(i,j,k,bi,bj)
adtracer(i,j,kp1,bi,bj) = adtracer(i,j,kp1,bi,bj)-addtdz(
$i,j)*op5*op5*recip_drc(kp1)*maskc(i,j,kp1,bi,bj)
addtdz(i,j) = 0.d0
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
adkvy(i,j,k,bi,bj) = adkvy(i,j,k,bi,bj)-addf(i,j)*ya(i,j)*
$recip_dyc(i,j,bi,bj)*(tracer(i,j,k,bi,bj)-tracer(i,j-1,k,bi,bj))
adtracer(i,j-1,k,bi,bj) = adtracer(i,j-1,k,bi,bj)+addf(i,j)*
$ya(i,j)*kvy(i,j,k,bi,bj)*recip_dyc(i,j,bi,bj)
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)-addf(i,j)*ya(
$i,j)*kvy(i,j,k,bi,bj)*recip_dyc(i,j,bi,bj)
end do
end do
endif
end
subroutine mdgmredi_ytransport( imin, imax, jmin, jmax, bi, bj, k,
$ ya, tracer, traceridentity, df, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer maxpass
parameter ( maxpass = 2 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision op5
parameter ( op5 = 0.5d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_gmredi_k_gad_kvy_3h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkvy/ comlev1_gmredi_k_gad_kvy_3h
real*8 comlev1_gmredi_k_gad_kvz_4h(1-olx:snx+olx,1-oly:sny+oly,
$3600)
common /cadkvz/ comlev1_gmredi_k_gad_kvz_4h
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision kux(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvy(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_hortensor/ kux, kvy
logical gm_advform
logical gm_advseparate
logical gm_extradiag
logical gm_inmomasstress
logical gm_mdsio
logical gm_mnc
common /gm_params_l/ gm_advform, gm_advseparate, gm_extradiag,
$gm_mnc, gm_mdsio, gm_inmomasstress
double precision kuz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision kvz(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /gm_uvtensor/ kuz, kvz
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
double precision df(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
integer k
integer mythid
double precision tracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer traceridentity
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision dtdz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer igadkey
integer iqa
integer iqb
integer iqc
integer iqd
integer j
integer kkey
integer km1
integer kp1
integer max0
integer max1
integer max2
integer max3
C**********************************************
C executable statements of routine
C**********************************************
act0 = traceridentity-1
max0 = maxpass
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
igadkey = act0+1+act1*max0+act2*max0*max1+act3*max0*max1*max2+
$act4*max0*max1*max2*max3
kkey = (igadkey-1)*nr+k
if (usegmredi) then
do iqd = 1-oly, sny+oly
do iqc = 1-olx, snx+olx
comlev1_gmredi_k_gad_kvy_3h(iqc,iqd,kkey) = kvy(iqc,iqd,k,
$bi,bj)
end do
end do
do iqb = 1-oly, sny+oly
do iqa = 1-olx, snx+olx
comlev1_gmredi_k_gad_kvz_4h(iqa,iqb,kkey) = kvz(iqa,iqb,k,
$bi,bj)
end do
end do
do j = jmin, jmax
do i = imin, imax
df(i,j) = df(i,j)-ya(i,j)*kvy(i,j,k,bi,bj)*recip_dyc(i,j,bi,
$bj)*(tracer(i,j,k,bi,bj)-tracer(i,j-1,k,bi,bj))
end do
end do
if (gm_extradiag) then
km1 = max(k-1,1)
kp1 = min(k+1,nr)
do j = jmin, jmax
do i = imin, imax
dtdz(i,j) = op5*(op5*recip_drc(k)*(maskc(i,j-1,k,bi,bj)*(
$tracer(i,j-1,km1,bi,bj)-tracer(i,j-1,k,bi,bj))+maskc(i,j,k,bi,bj)*
$(tracer(i,j,km1,bi,bj)-tracer(i,j,k,bi,bj)))+op5*recip_drc(kp1)*(
$maskc(i,j-1,kp1,bi,bj)*(tracer(i,j-1,k,bi,bj)-tracer(i,j-1,kp1,bi,
$bj))+maskc(i,j,kp1,bi,bj)*(tracer(i,j,k,bi,bj)-tracer(i,j,kp1,bi,
$bj))))
end do
end do
do j = jmin, jmax
do i = imin, imax
df(i,j) = df(i,j)-ya(i,j)*kvz(i,j,k,bi,bj)*dtdz(i,j)
end do
end do
endif
endif
end
subroutine adgrad_sigma( bi, bj, k, adrhok, adsigkm1, adsigkp1,
$adsigmax, adsigmay, adsigmar )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adrhok(1-olx:snx+olx,1-oly:sny+oly)
double precision adsigkm1(1-olx:snx+olx,1-oly:sny+oly)
double precision adsigkp1(1-olx:snx+olx,1-oly:sny+oly)
double precision adsigmar(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adsigmax(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adsigmay(1-olx:snx+olx,1-oly:sny+oly,nr)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
double precision adrholoc(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrholoc(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adsigmar(i,j,k) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adsigkm1(i,j) = adsigkm1(i,j)-adsigmar(i,j,k)*maskc(i,j,k,
$bi,bj)*recip_drc(k)*rksign
adsigkp1(i,j) = adsigkp1(i,j)+adsigmar(i,j,k)*maskc(i,j,k,
$bi,bj)*recip_drc(k)*rksign
adsigmar(i,j,k) = 0.d0
end do
end do
endif
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
adrholoc(i,j-1) = adrholoc(i,j-1)-adsigmay(i,j,k)*masks(i,j,k,
$bi,bj)*recip_dyc(i,j,bi,bj)
adrholoc(i,j) = adrholoc(i,j)+adsigmay(i,j,k)*masks(i,j,k,bi,
$bj)*recip_dyc(i,j,bi,bj)
adsigmay(i,j,k) = 0.d0
end do
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 2, .false. ,adrholoc )
endif
do j = 1-oly, sny+oly
do i = 1-olx+1, snx+olx
adrholoc(i-1,j) = adrholoc(i-1,j)-adsigmax(i,j,k)*maskw(i,j,k,
$bi,bj)*recip_dxc(i,j,bi,bj)
adrholoc(i,j) = adrholoc(i,j)+adsigmax(i,j,k)*maskw(i,j,k,bi,
$bj)*recip_dxc(i,j,bi,bj)
adsigmax(i,j,k) = 0.d0
end do
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 1, .false. ,adrholoc )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrhok(i,j) = adrhok(i,j)+adrholoc(i,j)
adrholoc(i,j) = 0.d0
end do
end do
end
subroutine adimpldiff( bi, bj, imin, imax, jmin, jmax, tracerid,
$kapparx, adkapparx, recip_hfac, gxnm1, adgxnm1 )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adgxnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adkapparx(1-olx:snx+olx,1-oly:sny+oly,nr)
integer bi
integer bj
double precision gxnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer imax
integer imin
integer jmax
integer jmin
double precision kapparx(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision recip_hfac(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
integer tracerid
C==============================================
C declare local variables
C==============================================
double precision a(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision ada(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adb(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adbet(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adc(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adgam(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adgynm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision b(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision bet(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision c(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision deltatx(nr)
double precision gam(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision gynm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer i
integer ip1
integer ip2
integer ip3
integer ip4
integer ip5
integer j
integer k
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
ada(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adb(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adbet(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adc(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgam(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgynm1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (tracerid .ge. 1) then
do k = 1, nr
deltatx(k) = dttracerlev(k)
end do
else
do k = 1, nr
deltatx(k) = deltatmom
end do
endif
do k = 1, nr
do j = jmin, jmax
do i = imin, imax
gynm1(i,j,k,bi,bj) = 0.d0
end do
end do
end do
do j = jmin, jmax
do i = imin, imax
a(i,j,1) = 0.d0
end do
end do
do k = 2, nr
do j = jmin, jmax
do i = imin, imax
a(i,j,k) = -(deltatx(k)*recip_hfac(i,j,k,bi,bj)*recip_drf(k)
$*recip_deepfac2c(k)*recip_rhofacc(k)*kapparx(i,j,k)*recip_drc(k)*
$deepfac2f(k)*rhofacf(k))
if (recip_hfac(i,j,k-1,bi,bj) .eq. 0.) then
a(i,j,k) = 0.
endif
end do
end do
end do
do k = 1, nr-1
do j = jmin, jmax
do i = imin, imax
c(i,j,k) = -(deltatx(k)*recip_hfac(i,j,k,bi,bj)*recip_drf(k)
$*recip_deepfac2c(k)*recip_rhofacc(k)*kapparx(i,j,k+1)*recip_drc(k+
$1)*deepfac2f(k+1)*rhofacf(k+1))
if (recip_hfac(i,j,k+1,bi,bj) .eq. 0.) then
c(i,j,k) = 0.
endif
end do
end do
end do
do j = jmin, jmax
do i = imin, imax
c(i,j,nr) = 0.d0
end do
end do
do k = 1, nr
do j = jmin, jmax
do i = imin, imax
b(i,j,k) = 1.d0-c(i,j,k)-a(i,j,k)
end do
end do
end do
do k = 1, nr
do j = jmin, jmax
do i = imin, imax
bet(i,j,k) = 1.d0
gam(i,j,k) = 0.d0
end do
end do
end do
if (nr .gt. 1) then
do j = jmin, jmax
do i = imin, imax
if (b(i,j,1) .ne. 0.) then
bet(i,j,1) = 1.d0/b(i,j,1)
endif
end do
end do
endif
if (nr .ge. 2) then
do k = 2, nr
do j = jmin, jmax
do i = imin, imax
gam(i,j,k) = c(i,j,k-1)*bet(i,j,k-1)
if (b(i,j,k)-a(i,j,k)*gam(i,j,k) .ne. 0.) then
bet(i,j,k) = 1.d0/(b(i,j,k)-a(i,j,k)*gam(i,j,k))
endif
end do
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
gynm1(i,j,1,bi,bj) = gxnm1(i,j,1,bi,bj)*bet(i,j,1)
end do
end do
do k = 2, nr
do j = jmin, jmax
do i = imin, imax
gynm1(i,j,k,bi,bj) = bet(i,j,k)*(gxnm1(i,j,k,bi,bj)-a(i,j,k)
$*gynm1(i,j,k-1,bi,bj))
end do
end do
end do
do k = 1, nr
do j = jmin, jmax
do i = imin, imax
adgynm1(i,j,k,bi,bj) = adgynm1(i,j,k,bi,bj)+adgxnm1(i,j,k,
$bi,bj)
adgxnm1(i,j,k,bi,bj) = 0.d0
end do
end do
end do
do k = nr-1, 2, -1
do j = jmin, jmax
do i = imin, imax
gynm1(i,j,k,bi,bj) = gynm1(i,j,k,bi,bj)-gam(i,j,k+1)*gynm1(
$i,j,k+1,bi,bj)
end do
end do
end do
do k = 1, nr-1
do j = jmin, jmax
do i = imin, imax
adgam(i,j,k+1) = adgam(i,j,k+1)-adgynm1(i,j,k,bi,bj)*gynm1(
$i,j,k+1,bi,bj)
adgynm1(i,j,k+1,bi,bj) = adgynm1(i,j,k+1,bi,bj)-adgynm1(i,j,
$k,bi,bj)*gam(i,j,k+1)
end do
end do
end do
do k = 1, nr
do j = jmin, jmax
do i = imin, imax
gynm1(i,j,k,bi,bj) = 0.d0
end do
end do
end do
do j = jmin, jmax
do i = imin, imax
gynm1(i,j,1,bi,bj) = gxnm1(i,j,1,bi,bj)*bet(i,j,1)
end do
end do
do k = 2, nr-1
do j = jmin, jmax
do i = imin, imax
gynm1(i,j,k,bi,bj) = bet(i,j,k)*(gxnm1(i,j,k,bi,bj)-a(i,j,k)
$*gynm1(i,j,k-1,bi,bj))
end do
end do
end do
do k = nr, 2, -1
do j = jmin, jmax
do i = imin, imax
ada(i,j,k) = ada(i,j,k)-adgynm1(i,j,k,bi,bj)*bet(i,j,k)*
$gynm1(i,j,k-1,bi,bj)
adbet(i,j,k) = adbet(i,j,k)+adgynm1(i,j,k,bi,bj)*(gxnm1(i,j,
$k,bi,bj)-a(i,j,k)*gynm1(i,j,k-1,bi,bj))
adgxnm1(i,j,k,bi,bj) = adgxnm1(i,j,k,bi,bj)+adgynm1(i,j,k,
$bi,bj)*bet(i,j,k)
adgynm1(i,j,k-1,bi,bj) = adgynm1(i,j,k-1,bi,bj)-adgynm1(i,j,
$k,bi,bj)*bet(i,j,k)*a(i,j,k)
adgynm1(i,j,k,bi,bj) = 0.d0
end do
end do
end do
do j = jmin, jmax
do i = imin, imax
adbet(i,j,1) = adbet(i,j,1)+adgynm1(i,j,1,bi,bj)*gxnm1(i,j,1,
$bi,bj)
adgxnm1(i,j,1,bi,bj) = adgxnm1(i,j,1,bi,bj)+adgynm1(i,j,1,bi,
$bj)*bet(i,j,1)
adgynm1(i,j,1,bi,bj) = 0.d0
end do
end do
do k = 1, nr
do j = jmin, jmax
do i = imin, imax
bet(i,j,k) = 1.d0
end do
end do
end do
if (nr .gt. 1) then
do j = jmin, jmax
do i = imin, imax
if (b(i,j,1) .ne. 0.) then
bet(i,j,1) = 1.d0/b(i,j,1)
endif
end do
end do
endif
if (nr .ge. 2) then
do k = 2, nr-1
do j = jmin, jmax
do i = imin, imax
gam(i,j,k) = c(i,j,k-1)*bet(i,j,k-1)
if (b(i,j,k)-a(i,j,k)*gam(i,j,k) .ne. 0.) then
bet(i,j,k) = 1.d0/(b(i,j,k)-a(i,j,k)*gam(i,j,k))
endif
end do
end do
end do
do k = nr, 2, -1
do j = jmin, jmax
do i = imin, imax
gam(i,j,k) = c(i,j,k-1)*bet(i,j,k-1)
if (b(i,j,k)-a(i,j,k)*gam(i,j,k) .ne. 0.) then
ada(i,j,k) = ada(i,j,k)+adbet(i,j,k)*(1.d0*gam(i,j,k)/((
$b(i,j,k)-a(i,j,k)*gam(i,j,k))*(b(i,j,k)-a(i,j,k)*gam(i,j,k))))
adb(i,j,k) = adb(i,j,k)-adbet(i,j,k)/((b(i,j,k)-a(i,j,k)
$*gam(i,j,k))*(b(i,j,k)-a(i,j,k)*gam(i,j,k)))
adgam(i,j,k) = adgam(i,j,k)+adbet(i,j,k)*(1.d0*a(i,j,k)/
$((b(i,j,k)-a(i,j,k)*gam(i,j,k))*(b(i,j,k)-a(i,j,k)*gam(i,j,k))))
adbet(i,j,k) = 0.d0
endif
adbet(i,j,k-1) = adbet(i,j,k-1)+adgam(i,j,k)*c(i,j,k-1)
adc(i,j,k-1) = adc(i,j,k-1)+adgam(i,j,k)*bet(i,j,k-1)
adgam(i,j,k) = 0.d0
end do
end do
end do
endif
if (nr .gt. 1) then
do j = jmin, jmax
do i = imin, imax
if (b(i,j,1) .ne. 0.) then
adb(i,j,1) = adb(i,j,1)-adbet(i,j,1)/(b(i,j,1)*b(i,j,1))
adbet(i,j,1) = 0.d0
endif
end do
end do
endif
do k = 1, nr
do j = jmin, jmax
do i = imin, imax
ada(i,j,k) = ada(i,j,k)-adb(i,j,k)
adc(i,j,k) = adc(i,j,k)-adb(i,j,k)
adb(i,j,k) = 0.d0
end do
end do
end do
do j = jmin, jmax
do i = imin, imax
adc(i,j,nr) = 0.d0
end do
end do
do k = 1, nr-1
do j = jmin, jmax
do i = imin, imax
if (recip_hfac(i,j,k+1,bi,bj) .eq. 0.) then
adc(i,j,k) = 0.d0
endif
adkapparx(i,j,k+1) = adkapparx(i,j,k+1)-adc(i,j,k)*deltatx(
$k)*recip_hfac(i,j,k,bi,bj)*recip_drf(k)*recip_deepfac2c(k)*
$recip_rhofacc(k)*recip_drc(k+1)*deepfac2f(k+1)*rhofacf(k+1)
adc(i,j,k) = 0.d0
end do
end do
end do
do k = 2, nr
do j = jmin, jmax
do i = imin, imax
if (recip_hfac(i,j,k-1,bi,bj) .eq. 0.) then
ada(i,j,k) = 0.d0
endif
adkapparx(i,j,k) = adkapparx(i,j,k)-ada(i,j,k)*deltatx(k)*
$recip_hfac(i,j,k,bi,bj)*recip_drf(k)*recip_deepfac2c(k)*
$recip_rhofacc(k)*recip_drc(k)*deepfac2f(k)*rhofacf(k)
ada(i,j,k) = 0.d0
end do
end do
end do
end
subroutine adini_autodiff
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision addetahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adpmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adexact_eta_local/ addetahdt, adpmepr
C==============================================
C declare local variables
C==============================================
integer ip1
integer ip2
integer ip3
integer ip4
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addetahdt(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adpmepr(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
end
subroutine adini_dynvars
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adetah(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /addynvars_r_2/ adetah
C==============================================
C declare local variables
C==============================================
integer ip1
integer ip2
integer ip3
integer ip4
integer ip5
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adetah(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adetan(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgsnm1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgtnm1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgunm1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgvnm1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsalt(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtheta(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtotphihyd(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
aduvel(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advvel(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adwvel(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
end
subroutine adini_forcing
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adempmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_empmr/ adempmr
double precision adfu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_fu/ adfu
double precision adfv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_fv/ adfv
double precision adqnet(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_qnet/ adqnet
double precision adsaltflux(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_saltflux/ adsaltflux
double precision adsss(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_sss/ adsss
double precision adsst(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_sst/ adsst
double precision adqnetm(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /admean_qnet/ adqnetm
double precision adsurfaceforcings(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingt(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingtice(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingu(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurfaceforcingv(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurfaceforcingu, adsurfaceforcingv,
$adsurfaceforcingt, adsurfaceforcings, adsurfaceforcingtice
double precision adempmr0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adempmr1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adqnet1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsaltflux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsss1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsst1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtaux1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy0(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtauy1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adtdfields/ adtaux0, adtauy0, adqnet0, adempmr0, adsst0,
$adsss0, adtaux1, adtauy1, adqnet1, adempmr1, adsst1, adsss1,
$adsaltflux0, adsaltflux1
C==============================================
C declare local variables
C==============================================
integer ip1
integer ip2
integer ip3
integer ip4
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adempmr(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adempmr0(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adempmr1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfu(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfv(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adqnet(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adqnet0(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adqnet1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adqnetm(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsaltflux(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsaltflux0(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsaltflux1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsss(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsss0(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsss1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsst(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsst0(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsst1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsurfaceforcingtice(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtaux0(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtaux1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtauy0(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtauy1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
end
subroutine adinitialise_varia( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
niter0 = nint((starttime-basetime)/deltatclock)
call admonitor( starttime,niter0,mythid )
call adexch_xyz_rl( adwvel,mythid )
call adpackages_init_variables( mythid )
call adini_autodiff
call adini_forcing
call adini_dynvars
end
subroutine mdinitialise_varia( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
C**********************************************
C executable statements of routine
C**********************************************
niter0 = nint((starttime-basetime)/deltatclock)
call ini_depths( mythid )
call ini_masks_etc( mythid )
call ini_linear_phisurf( mythid )
call ini_cg2d( mythid )
call ini_dynvars( mythid )
call ini_fields( mythid )
call ini_forcing( mythid )
call ini_autodiff( mythid )
call mdpackages_init_variables( mythid )
if (starttime .eq. basetime .and. cadjfreq .ne. 0.) then
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
call convective_adjustment_ini( bi,bj,starttime,niter0,
$mythid )
end do
end do
endif
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
call integr_continuity( bi,bj,uvel,vvel,starttime,niter0,
$mythid )
end do
end do
if (exactconserv) then
call update_etah( starttime,niter0,mythid )
endif
call exch_xyz_rl( wvel,mythid )
call monitor( starttime,niter0,mythid )
call do_statevars_tave( starttime,niter0,mythid )
call do_the_model_io( .false. ,starttime,niter0,mythid )
end
subroutine adintegr_continuity( bi, bj, adufld, advfld, mytime )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adetah(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /addynvars_r_2/ adetah
double precision addetahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adpmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adexact_eta_local/ addetahdt, adpmepr
double precision adempmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_empmr/ adempmr
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
double precision mytime
C==============================================
C declare local variables
C==============================================
double precision adhdivflow(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision facemp
integer i
integer ip1
integer ip2
integer j
integer k
integer ks
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adhdivflow(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adutrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advtrans(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do k = 1, nr
if (k .eq. nr .and. mytime .ne. basetime .and. usingpcoords
$.and. fluidiswater .and. userealfreshwaterflux) then
do j = 1, sny
do i = 1, snx
adpmepr(i,j,bi,bj) = adpmepr(i,j,bi,bj)+adwvel(i,j,k,bi,
$bj)*mass2runit*maskc(i,j,k,bi,bj)
end do
end do
endif
call adintegrate_for_w( bi,bj,k,adufld,advfld,adwvel )
end do
if (exactconserv .and. mytime .ne. starttime) then
if (implicdiv2dflow .eq. 0.d0) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adetah(i,j,bi,bj) = adetah(i,j,bi,bj)+adetan(i,j,bi,bj)
adetan(i,j,bi,bj) = 0.d0
end do
end do
else
do j = 1, sny
do i = 1, snx
addetahdt(i,j,bi,bj) = addetahdt(i,j,bi,bj)+adetan(i,j,bi,
$bj)*implicdiv2dflow*deltatfreesurf
adetah(i,j,bi,bj) = adetah(i,j,bi,bj)+adetan(i,j,bi,bj)
adetan(i,j,bi,bj) = 0.d0
end do
end do
endif
endif
if (exactconserv) then
facemp = 0.
if (fluidiswater .and. userealfreshwaterflux) then
facemp = mass2runit
endif
if (mytime .eq. starttime .and. mytime .ne. basetime .and.
$fluidiswater .and. userealfreshwaterflux) then
do j = 1, sny
do i = 1, snx
adpmepr(i,j,bi,bj) = adpmepr(i,j,bi,bj)*runit2mass
addetahdt(i,j,bi,bj) = addetahdt(i,j,bi,bj)+adpmepr(i,j,
$bi,bj)
adhdivflow(i,j) = adhdivflow(i,j)+adpmepr(i,j,bi,bj)*
$recip_ra(i,j,bi,bj)*recip_deepfac2f(1)
adpmepr(i,j,bi,bj) = 0.d0
end do
end do
if (usepickupbeforec54) then
do j = 1, sny
do i = 1, snx
adetah(i,j,bi,bj) = adetah(i,j,bi,bj)-addetahdt(i,j,bi,
$bj)/(implicdiv2dflow*deltatfreesurf)
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+addetahdt(i,j,bi,
$bj)/(implicdiv2dflow*deltatfreesurf)
addetahdt(i,j,bi,bj) = 0.d0
end do
end do
endif
else if (mytime .eq. starttime) then
do j = 1, sny
do i = 1, snx
ks = ksurfc(i,j,bi,bj)
adhdivflow(i,j) = adhdivflow(i,j)-addetahdt(i,j,bi,bj)*
$recip_ra(i,j,bi,bj)*recip_deepfac2f(ks)
addetahdt(i,j,bi,bj) = 0.d0
adpmepr(i,j,bi,bj) = 0.d0
end do
end do
else
do j = 1, sny
do i = 1, snx
ks = ksurfc(i,j,bi,bj)
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)-addetahdt(i,j,bi,
$bj)*facemp
adhdivflow(i,j) = adhdivflow(i,j)-addetahdt(i,j,bi,bj)*
$recip_ra(i,j,bi,bj)*recip_deepfac2f(ks)
addetahdt(i,j,bi,bj) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)-adpmepr(i,j,bi,bj)
adpmepr(i,j,bi,bj) = 0.d0
end do
end do
endif
do k = nr, 1, -1
do j = 1, sny
do i = 1, snx
adutrans(i+1,j) = adutrans(i+1,j)+adhdivflow(i,j)*maskc(i,
$j,k,bi,bj)
adutrans(i,j) = adutrans(i,j)-adhdivflow(i,j)*maskc(i,j,k,
$bi,bj)
advtrans(i,j+1) = advtrans(i,j+1)+adhdivflow(i,j)*maskc(i,
$j,k,bi,bj)
advtrans(i,j) = advtrans(i,j)-adhdivflow(i,j)*maskc(i,j,k,
$bi,bj)
end do
end do
do j = 1, sny+1
do i = 1, snx+1
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)+advtrans(i,j)*
$dxg(i,j,bi,bj)*deepfacc(k)*rhofacc(k)*drf(k)*hfacs(i,j,k,bi,bj)
advtrans(i,j) = 0.d0
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+adutrans(i,j)*
$dyg(i,j,bi,bj)*deepfacc(k)*rhofacc(k)*drf(k)*hfacw(i,j,k,bi,bj)
adutrans(i,j) = 0.d0
end do
end do
end do
endif
end
subroutine adintegrate_for_w( bi, bj, k, adufld, advfld, adwfld )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
double precision adconv2d(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adconv2d(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adutrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advtrans(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (rigidlid) then
if (k .eq. 1) then
do j = 1, sny
do i = 1, snx
adwfld(i,j,k,bi,bj) = 0.d0
end do
end do
else if (k .eq. nr) then
do j = 1, sny
do i = 1, snx
adconv2d(i,j) = adconv2d(i,j)+adwfld(i,j,k,bi,bj)*
$recip_ra(i,j,bi,bj)*maskc(i,j,k,bi,bj)*maskc(i,j,k-1,bi,bj)*
$recip_deepfac2f(k)*recip_rhofacf(k)
adwfld(i,j,k,bi,bj) = 0.d0
end do
end do
else
do j = 1, sny
do i = 1, snx
adconv2d(i,j) = adconv2d(i,j)+adwfld(i,j,k,bi,bj)*
$recip_ra(i,j,bi,bj)*maskc(i,j,k,bi,bj)*maskc(i,j,k-1,bi,bj)*
$recip_deepfac2f(k)*recip_rhofacf(k)
adwfld(i,j,k+1,bi,bj) = adwfld(i,j,k+1,bi,bj)+adwfld(i,j,
$k,bi,bj)*deepfac2f(k+1)*rhofacf(k+1)*maskc(i,j,k,bi,bj)*maskc(i,j,
$k-1,bi,bj)*recip_deepfac2f(k)*recip_rhofacf(k)
adwfld(i,j,k,bi,bj) = 0.d0
end do
end do
endif
else
if (k .eq. nr) then
do j = 1, sny
do i = 1, snx
adconv2d(i,j) = adconv2d(i,j)+adwfld(i,j,k,bi,bj)*
$recip_ra(i,j,bi,bj)*maskc(i,j,k,bi,bj)*recip_deepfac2f(k)*
$recip_rhofacf(k)
adwfld(i,j,k,bi,bj) = 0.d0
end do
end do
else
do j = 1, sny
do i = 1, snx
adconv2d(i,j) = adconv2d(i,j)+adwfld(i,j,k,bi,bj)*
$recip_ra(i,j,bi,bj)*maskc(i,j,k,bi,bj)*recip_deepfac2f(k)*
$recip_rhofacf(k)
adwfld(i,j,k+1,bi,bj) = adwfld(i,j,k+1,bi,bj)+adwfld(i,j,
$k,bi,bj)*deepfac2f(k+1)*rhofacf(k+1)*maskc(i,j,k,bi,bj)*
$recip_deepfac2f(k)*recip_rhofacf(k)
adwfld(i,j,k,bi,bj) = 0.d0
end do
end do
endif
endif
do j = 1, sny
do i = 1, snx
adutrans(i+1,j) = adutrans(i+1,j)-adconv2d(i,j)
adutrans(i,j) = adutrans(i,j)+adconv2d(i,j)
advtrans(i,j+1) = advtrans(i,j+1)-adconv2d(i,j)
advtrans(i,j) = advtrans(i,j)+adconv2d(i,j)
adconv2d(i,j) = 0.d0
end do
end do
do j = 1, sny+1
do i = 1, snx+1
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)+advtrans(i,j)*dxg(i,
$j,bi,bj)*deepfacc(k)*rhofacc(k)*drf(k)*hfacs(i,j,k,bi,bj)
advtrans(i,j) = 0.d0
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+adutrans(i,j)*dyg(i,
$j,bi,bj)*deepfacc(k)*rhofacc(k)*drf(k)*hfacw(i,j,k,bi,bj)
adutrans(i,j) = 0.d0
end do
end do
end
subroutine adload_fields_driver( mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare common blocks
C==============================================
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
double precision mytime
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if ( .not. (useexf .or. useebm)) then
call adexternal_fields_load( mytime,myiter,mythid )
endif
end
subroutine admom_calc_absvort3( advort3, adomega3 )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision adomega3(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
double precision nonlinfac
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (momadvection) then
nonlinfac = 1.
else
nonlinfac = 0.
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
advort3(i,j) = advort3(i,j)+adomega3(i,j)*nonlinfac
adomega3(i,j) = 0.d0
end do
end do
end
subroutine admom_calc_hdiv( bi, bj, k, hdivscheme, adufld, advfld,
$ adhdiv )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adhdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer hdivscheme
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (hdivscheme .eq. 1) then
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+adhdiv(i,j)*dyg(i+1,j,bi,bj)*
$recip_ra(i,j,bi,bj)
adufld(i,j) = adufld(i,j)-adhdiv(i,j)*dyg(i,j,bi,bj)*
$recip_ra(i,j,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+adhdiv(i,j)*dxg(i,j+1,bi,bj)*
$recip_ra(i,j,bi,bj)
advfld(i,j) = advfld(i,j)-adhdiv(i,j)*dxg(i,j,bi,bj)*
$recip_ra(i,j,bi,bj)
adhdiv(i,j) = 0.d0
end do
end do
else if (hdivscheme .eq. 2) then
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+adhdiv(i,j)*dyg(i+1,j,bi,bj)*
$hfacw(i+1,j,k,bi,bj)*recip_ra(i,j,bi,bj)*recip_hfacc(i,j,k,bi,bj)
adufld(i,j) = adufld(i,j)-adhdiv(i,j)*dyg(i,j,bi,bj)*hfacw(
$i,j,k,bi,bj)*recip_ra(i,j,bi,bj)*recip_hfacc(i,j,k,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+adhdiv(i,j)*dxg(i,j+1,bi,bj)*
$hfacs(i,j+1,k,bi,bj)*recip_ra(i,j,bi,bj)*recip_hfacc(i,j,k,bi,bj)
advfld(i,j) = advfld(i,j)-adhdiv(i,j)*dxg(i,j,bi,bj)*hfacs(
$i,j,k,bi,bj)*recip_ra(i,j,bi,bj)*recip_hfacc(i,j,k,bi,bj)
adhdiv(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_calc_ke( bi, bj, k, kescheme, ufld, adufld, vfld,
$ advfld, adke )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
integer kescheme
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (kescheme .eq. (-1)) then
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+0.25*adke(i,j)*(ufld(i,j)+
$ufld(i+1,j))
adufld(i,j) = adufld(i,j)+0.25*adke(i,j)*(ufld(i,j)+ufld(i+
$1,j))
advfld(i,j+1) = advfld(i,j+1)+0.25*adke(i,j)*(vfld(i,j)+
$vfld(i,j+1))
advfld(i,j) = advfld(i,j)+0.25*adke(i,j)*(vfld(i,j)+vfld(i,
$j+1))
adke(i,j) = 0.d0
end do
end do
else if (kescheme .eq. 0) then
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+0.5*adke(i,j)*ufld(i+1,j)
adufld(i,j) = adufld(i,j)+0.5*adke(i,j)*ufld(i,j)
advfld(i,j+1) = advfld(i,j+1)+0.5*adke(i,j)*vfld(i,j+1)
advfld(i,j) = advfld(i,j)+0.5*adke(i,j)*vfld(i,j)
adke(i,j) = 0.d0
end do
end do
else if (kescheme .eq. 1) then
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+0.5*adke(i,j)*ufld(i+1,j)*raw(
$i+1,j,bi,bj)*recip_ra(i,j,bi,bj)
adufld(i,j) = adufld(i,j)+0.5*adke(i,j)*ufld(i,j)*raw(i,j,
$bi,bj)*recip_ra(i,j,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.5*adke(i,j)*vfld(i,j+1)*ras(
$i,j+1,bi,bj)*recip_ra(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+0.5*adke(i,j)*vfld(i,j)*ras(i,j,
$bi,bj)*recip_ra(i,j,bi,bj)
adke(i,j) = 0.d0
end do
end do
else if (kescheme .eq. 2) then
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+0.5*adke(i,j)*ufld(i+1,j)*
$hfacw(i+1,j,k,bi,bj)*recip_hfacc(i,j,k,bi,bj)
adufld(i,j) = adufld(i,j)+0.5*adke(i,j)*ufld(i,j)*hfacw(i,j,
$k,bi,bj)*recip_hfacc(i,j,k,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.5*adke(i,j)*vfld(i,j+1)*
$hfacs(i,j+1,k,bi,bj)*recip_hfacc(i,j,k,bi,bj)
advfld(i,j) = advfld(i,j)+0.5*adke(i,j)*vfld(i,j)*hfacs(i,j,
$k,bi,bj)*recip_hfacc(i,j,k,bi,bj)
adke(i,j) = 0.d0
end do
end do
else if (kescheme .eq. 3) then
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+0.5*adke(i,j)*ufld(i+1,j)*
$hfacw(i+1,j,k,bi,bj)*raw(i+1,j,bi,bj)*recip_hfacc(i,j,k,bi,bj)*
$recip_ra(i,j,bi,bj)
adufld(i,j) = adufld(i,j)+0.5*adke(i,j)*ufld(i,j)*hfacw(i,j,
$k,bi,bj)*raw(i,j,bi,bj)*recip_hfacc(i,j,k,bi,bj)*recip_ra(i,j,bi,
$bj)
advfld(i,j+1) = advfld(i,j+1)+0.5*adke(i,j)*vfld(i,j+1)*
$hfacs(i,j+1,k,bi,bj)*ras(i,j+1,bi,bj)*recip_hfacc(i,j,k,bi,bj)*
$recip_ra(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+0.5*adke(i,j)*vfld(i,j)*hfacs(i,j,
$k,bi,bj)*ras(i,j,bi,bj)*recip_hfacc(i,j,k,bi,bj)*recip_ra(i,j,bi,
$bj)
adke(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_calc_relvort3( bi, bj, adufld, advfld, advort3 )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer myface
logical northeastcorner
logical northwestcorner
logical southeastcorner
logical southwestcorner
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usecubedsphereexchange) then
myface = bi
southwestcorner = .true.
southeastcorner = .true.
northwestcorner = .true.
northeastcorner = .true.
if (northeastcorner) then
i = snx+1
j = sny+1
if (mod(myface,2) .eq. 1) then
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)-advort3(i,j)*recip_raz(i,j,bi,
$bj)*dyc(i-1,j,bi,bj)
advort3(i,j) = 0.d0
else
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)-advort3(i,j)*recip_raz(i,j,bi,
$bj)*dyc(i-1,j,bi,bj)
advort3(i,j) = 0.d0
endif
endif
if (northwestcorner) then
i = 1
j = sny+1
if (myface .eq. 1) then
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+advort3(i,j)*recip_raz(i,j,bi,bj)*
$dyc(i,j,bi,bj)
advort3(i,j) = 0.d0
else if (myface .eq. 3) then
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+advort3(i,j)*recip_raz(i,j,bi,bj)*
$dyc(i,j,bi,bj)
advort3(i,j) = 0.d0
else
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+advort3(i,j)*recip_raz(i,j,bi,bj)*
$dyc(i,j,bi,bj)
advort3(i,j) = 0.d0
endif
endif
if (southeastcorner) then
i = snx+1
j = 1
if (myface .eq. 2) then
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)-advort3(i,j)*recip_raz(i,j,bi,
$bj)*dyc(i-1,j,bi,bj)
advort3(i,j) = 0.d0
else if (myface .eq. 4) then
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)-advort3(i,j)*recip_raz(i,j,bi,
$bj)*dyc(i-1,j,bi,bj)
advort3(i,j) = 0.d0
else
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)-advort3(i,j)*recip_raz(i,j,bi,
$bj)*dyc(i-1,j,bi,bj)
advort3(i,j) = 0.d0
endif
endif
if (southwestcorner) then
i = 1
j = 1
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+advort3(i,j)*recip_raz(i,j,bi,bj)*
$dyc(i,j,bi,bj)
advort3(i,j) = 0.d0
endif
endif
do j = 2-oly, sny+oly
do i = 2-olx, snx+olx
adufld(i,j-1) = adufld(i,j-1)+advort3(i,j)*recip_raz(i,j,bi,
$bj)*dxc(i,j-1,bi,bj)
adufld(i,j) = adufld(i,j)-advort3(i,j)*recip_raz(i,j,bi,bj)*
$dxc(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)-advort3(i,j)*recip_raz(i,j,bi,
$bj)*dyc(i-1,j,bi,bj)
advfld(i,j) = advfld(i,j)+advort3(i,j)*recip_raz(i,j,bi,bj)*
$dyc(i,j,bi,bj)
advort3(i,j) = 0.d0
end do
end do
end
subroutine admom_calc_rtrans( k, bi, bj, adrtransu, adrtransv )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adrtransu(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtransv(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (k .gt. nr) then
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adrtransv(i,j) = 0.d0
adrtransu(i,j) = 0.d0
end do
end do
else
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adwvel(i,j-1,k,bi,bj) = adwvel(i,j-1,k,bi,bj)+0.5d0*
$adrtransv(i,j)*ra(i,j-1,bi,bj)*deepfac2f(k)*rhofacf(k)
adwvel(i,j,k,bi,bj) = adwvel(i,j,k,bi,bj)+0.5d0*adrtransv(i,
$j)*ra(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)
adrtransv(i,j) = 0.d0
adwvel(i-1,j,k,bi,bj) = adwvel(i-1,j,k,bi,bj)+0.5d0*
$adrtransu(i,j)*ra(i-1,j,bi,bj)*deepfac2f(k)*rhofacf(k)
adwvel(i,j,k,bi,bj) = adwvel(i,j,k,bi,bj)+0.5d0*adrtransu(i,
$j)*ra(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)
adrtransu(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_calc_strain( bi, bj, adufld, advfld, adstrain )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adstrain(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 2-oly, sny+oly
do i = 2-olx, snx+olx
adufld(i,j-1) = adufld(i,j-1)-adstrain(i,j)*dxc(i,j-1,bi,bj)*
$recip_raz(i,j,bi,bj)
adufld(i,j) = adufld(i,j)+adstrain(i,j)*dxc(i,j,bi,bj)*
$recip_raz(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)-adstrain(i,j)*dyc(i-1,j,bi,bj)*
$recip_raz(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+adstrain(i,j)*dyc(i,j,bi,bj)*
$recip_raz(i,j,bi,bj)
adstrain(i,j) = 0.d0
end do
end do
end
subroutine admom_calc_tension( bi, bj, adufld, advfld, adtension )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adtension(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+adtension(i,j)*dyg(i+1,j,bi,bj)*
$recip_ra(i,j,bi,bj)
adufld(i,j) = adufld(i,j)-adtension(i,j)*dyg(i,j,bi,bj)*
$recip_ra(i,j,bi,bj)
advfld(i,j+1) = advfld(i,j+1)-adtension(i,j)*dxg(i,j+1,bi,bj)*
$recip_ra(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+adtension(i,j)*dxg(i,j,bi,bj)*
$recip_ra(i,j,bi,bj)
adtension(i,j) = 0.d0
end do
end do
end
subroutine admom_calc_visc( bi, bj, k, adviscah_z, adviscah_d,
$advisca4_z, advisca4_d, hdiv, adhdiv, vort3, advort3, tension,
$adtension, strain, adstrain, ke, adke, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision pi
parameter ( pi = 3.1415926535898d0 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_mom_ijk_loop_visca4_zsm(2116800)
common /cadvisca4_zsmg/ comlev1_mom_ijk_loop_visca4_zsm
real*8 comlev1_mom_ijk_loop_viscah_zsm(2116800)
common /cadviscah_zsmg/ comlev1_mom_ijk_loop_viscah_zsm
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision l2_d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l2_z(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l3_d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l3_z(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l4rdt_d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l4rdt_z(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dt
common /mom_visc_l/ l2_d, l2_z, l3_d, l3_z, l4rdt_d, l4rdt_z,
$recip_dt
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
integer ikey
integer key
common /tamckeys/ key, ikey
C==============================================
C declare arguments
C==============================================
double precision adhdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
double precision adstrain(1-olx:snx+olx,1-oly:sny+oly)
double precision adtension(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision hdiv(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
integer mythid
double precision strain(1-olx:snx+olx,1-oly:sny+oly)
double precision tension(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision adalin
double precision addivdx(1-olx:snx+olx,1-oly:sny+oly)
double precision addivdy(1-olx:snx+olx,1-oly:sny+oly)
double precision adgrddiv
double precision adgrddivh
double precision adgrddivi
double precision adgrddivj
double precision adgrddivk
double precision adgrddivl
double precision adgrddivm
double precision adgrddivn
double precision adgrddivo
double precision adgrdvrt
double precision adgrdvrth
double precision adgrdvrti
double precision adgrdvrtj
double precision adgrdvrtk
double precision adgrdvrtl
double precision adgrdvrtm
double precision adgrdvrtn
double precision adgrdvrto
double precision adkezpt
double precision adu4scl
double precision aduscl
double precision advisca4_dlth(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_dlthh
double precision advisca4_dmin(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_dsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_zlth(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_zlthh
double precision advisca4_zmin(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_zsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_dlth(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_dlthh
double precision adviscah_dmin(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_dsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_dsmgh
double precision adviscah_zlth(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_zlthh
double precision adviscah_zmin(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_zsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_zsmgh
double precision advrtdx(1-olx:snx+olx,1-oly:sny+oly)
double precision advrtdy(1-olx:snx+olx,1-oly:sny+oly)
double precision alin
logical biharmonic
logical calcleith
logical calcsmag
double precision divdx(1-olx:snx+olx,1-oly:sny+oly)
double precision divdy(1-olx:snx+olx,1-oly:sny+oly)
double precision grddiv
double precision grddivh
double precision grddivi
double precision grddivj
double precision grddivk
double precision grddivl
double precision grddivm
double precision grddivn
double precision grddivo
double precision grdvrt
double precision grdvrth
double precision grdvrti
double precision grdvrtj
double precision grdvrtk
double precision grdvrtl
double precision grdvrtm
double precision grdvrtn
double precision grdvrto
logical harmonic
integer i
integer ip1
integer ip2
integer j
double precision kezpt
double precision l2
double precision l2rdt
double precision l3
double precision l4rdt
double precision l5
double precision leith2fac
double precision leith4fac
double precision leithd2fac
double precision leithd4fac
integer lockey_1
integer lockey_2
integer max1
integer max2
integer max3
double precision smag2fac
double precision smag4fac
double precision u4scl
double precision uscl
logical usevariableviscosity
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_dlth(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_dmax(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_dmin(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_dsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zlth(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zmax(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zmin(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4re_max
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_dlth(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_dmax(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_dmin(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_dsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zlth(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zmax(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zmin(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision viscahre_max
double precision vrtdx(1-olx:snx+olx,1-oly:sny+oly)
double precision vrtdy(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adalin = 0.d0
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addivdx(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addivdy(ip1,ip2) = 0.d0
end do
end do
adgrddiv = 0.d0
adgrdvrt = 0.d0
adkezpt = 0.d0
adu4scl = 0.d0
aduscl = 0.d0
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_dlth(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_dmin(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_dsmg(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_zlth(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_zmin(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_zsmg(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_dlth(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_dmin(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_dsmg(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_zlth(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_zmin(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_zsmg(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advrtdx(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advrtdy(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
ikey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
lockey_1 = (ikey-1)*nr+k
usevariableviscosity = viscahgrid .ne. 0. .or. visca4grid .ne. 0.
$.or. viscc2leith .ne. 0. .or. viscc2leithd .ne. 0. .or.
$viscc4leith .ne. 0. .or. viscc4leithd .ne. 0. .or. viscc2smag
$.ne. 0. .or. viscc4smag .ne. 0.
harmonic = viscah .ne. 0. .or. viscahd .ne. 0. .or. viscahz .ne.
$0. .or. viscahgrid .ne. 0. .or. viscc2leith .ne. 0. .or.
$viscc2leithd .ne. 0. .or. viscc2smag .ne. 0.
biharmonic = visca4 .ne. 0. .or. visca4d .ne. 0. .or. visca4z
$.ne. 0. .or. visca4grid .ne. 0. .or. viscc4leith .ne. 0. .or.
$viscc4leithd .ne. 0. .or. viscc4smag .ne. 0.
if (usevariableviscosity) then
if (harmonic .and. viscahremax .ne. 0.) then
viscahre_max = sqrt(2.d0)/viscahremax
else
viscahre_max = 0.d0
endif
if (biharmonic .and. visca4remax .ne. 0.) then
visca4re_max = 0.125d0*sqrt(2.d0)/visca4remax
else
visca4re_max = 0.d0
endif
calcleith = viscc2leith .ne. 0. .or. viscc2leithd .ne. 0. .or.
$viscc4leith .ne. 0. .or. viscc4leithd .ne. 0.
calcsmag = viscc2smag .ne. 0. .or. viscc4smag .ne. 0.
if (calcsmag) then
smag2fac = (viscc2smag/pi)**2
smag4fac = 0.125d0*(viscc4smag/pi)**2
else
smag2fac = 0.d0
smag4fac = 0.d0
endif
if (calcleith) then
if (usefullleith) then
leith2fac = (viscc2leith/pi)**6
leithd2fac = (viscc2leithd/pi)**6
leith4fac = 0.015625d0*(viscc4leith/pi)**6
leithd4fac = 0.015625d0*(viscc4leithd/pi)**6
else
leith2fac = (viscc2leith/pi)**3
leithd2fac = (viscc2leithd/pi)**3
leith4fac = 0.125d0*(viscc4leith/pi)**3
leithd4fac = 0.125d0*(viscc4leithd/pi)**3
endif
else
leith2fac = 0.d0
leith4fac = 0.d0
leithd2fac = 0.d0
leithd4fac = 0.d0
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
divdx(i,j) = 0.
divdy(i,j) = 0.
vrtdx(i,j) = 0.
vrtdy(i,j) = 0.
end do
end do
if (calcleith) then
if (usecubedsphereexchange) then
call fill_cs_corner_tr_rl( 1, .false. ,hdiv,bi,bj,mythid )
endif
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
divdx(i,j) = (hdiv(i,j)-hdiv(i-1,j))*recip_dxc(i,j,bi,bj)
end do
end do
if (usecubedsphereexchange) then
call fill_cs_corner_tr_rl( 2, .false. ,hdiv,bi,bj,mythid )
endif
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
divdy(i,j) = (hdiv(i,j)-hdiv(i,j-1))*recip_dyc(i,j,bi,bj)
end do
end do
do j = 2-oly, sny+oly
do i = 2-olx, snx+olx-1
vrtdx(i,j) = (vort3(i+1,j)-vort3(i,j))*recip_dxg(i,j,bi,
$bj)*masks(i,j,k,bi,bj)
end do
end do
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx
vrtdy(i,j) = (vort3(i,j+1)-vort3(i,j))*recip_dyg(i,j,bi,
$bj)*maskw(i,j,k,bi,bj)
end do
end do
endif
do j = sny+oly-1, 2-oly, -1
do i = snx+olx-1, 2-olx, -1
lockey_2 = i+olx+(snx+2*olx)*(j+oly-1)+(snx+2*olx)*(sny+2*
$oly)*(lockey_1-1)
visca4_zsmg(i,j) = comlev1_mom_ijk_loop_visca4_zsm(lockey_2)
viscah_zsmg(i,j) = comlev1_mom_ijk_loop_viscah_zsm(lockey_2)
l2 = l2_d(i,j,bi,bj)
l2rdt = 0.25d0*recip_dt*l2
l3 = l3_d(i,j,bi,bj)
l4rdt = l4rdt_d(i,j,bi,bj)
l5 = l2*l3
if (viscahre_max .gt. 0. .and. ke(i,j) .gt. 0.) then
uscl = sqrt(ke(i,j)*l2)*viscahre_max
else
uscl = 0.
endif
if (visca4re_max .gt. 0. .and. ke(i,j) .gt. 0.) then
u4scl = sqrt(ke(i,j))*l3*visca4re_max
else
u4scl = 0.
endif
if (usefullleith .and. calcleith) then
grdvrt = 0.25d0*(vrtdx(i,j+1)*vrtdx(i,j+1)+vrtdx(i,j)*
$vrtdx(i,j)+vrtdy(i+1,j)*vrtdy(i+1,j)+vrtdy(i,j)*vrtdy(i,j))
grddiv = 0.25d0*(divdx(i+1,j)*divdx(i+1,j)+divdx(i,j)*
$divdx(i,j)+divdy(i,j+1)*divdy(i,j+1)+divdy(i,j)*divdy(i,j))
viscah_dlth(i,j) = sqrt(leith2fac*grdvrt+leithd2fac*
$grddiv)*l3
visca4_dlth(i,j) = sqrt(leith4fac*grdvrt+leithd4fac*
$grddiv)*l5
else if (calcleith) then
grdvrt = max(abs(vrtdx(i,j+1)),abs(vrtdx(i,j)))
grdvrt = max(grdvrt,abs(vrtdy(i+1,j)))
grdvrt = max(grdvrt,abs(vrtdy(i,j)))
grddiv = max(abs(divdx(i+1,j)),abs(divdx(i,j)))
grddiv = max(grddiv,abs(divdy(i,j+1)))
grddiv = max(grddiv,abs(divdy(i,j)))
viscah_dlth(i,j) = (leith2fac*grdvrt+leithd2fac*grddiv)*l3
visca4_dlth(i,j) = (leith4fac*grdvrt+leithd4fac*grddiv)*l5
else
viscah_dlth(i,j) = 0.d0
visca4_dlth(i,j) = 0.d0
endif
if (calcsmag) then
viscah_dsmg(i,j) = l2*sqrt(tension(i,j)**2+0.25d0*(strain(
$i+1,j)**2+strain(i,j+1)**2+strain(i,j)**2+strain(i+1,j+1)**2))
visca4_dsmg(i,j) = smag4fac*l2*viscah_dsmg(i,j)
viscah_dsmg(i,j) = smag2fac*viscah_dsmg(i,j)
else
viscah_dsmg(i,j) = 0.d0
visca4_dsmg(i,j) = 0.d0
endif
alin = viscahd+viscahgrid*l2rdt+viscah_dlth(i,j)+
$viscah_dsmg(i,j)
viscah_dmin(i,j) = max(viscahgridmin*l2rdt,uscl)
viscah_d(i,j) = max(viscah_dmin(i,j),alin)
viscah_dmax(i,j) = min(viscahgridmax*l2rdt,viscahmax)
alin = visca4d+visca4grid*l4rdt+visca4_dlth(i,j)+
$visca4_dsmg(i,j)
visca4_dmin(i,j) = max(visca4gridmin*l4rdt,u4scl)
visca4_d(i,j) = max(visca4_dmin(i,j),alin)
visca4_dmax(i,j) = min(visca4gridmax*l4rdt,visca4max)
l2 = l2_z(i,j,bi,bj)
l2rdt = 0.25d0*recip_dt*l2
l3 = l3_z(i,j,bi,bj)
l4rdt = l4rdt_z(i,j,bi,bj)
l5 = l2*l3
if (viscahre_max .gt. 0. .or. visca4re_max .gt. 0.) then
kezpt = 0.25d0*(ke(i,j)+ke(i-1,j-1)+ke(i-1,j)+ke(i,j-1))
if (kezpt .gt. 0.) then
uscl = sqrt(kezpt*l2)*viscahre_max
u4scl = sqrt(kezpt)*l3*visca4re_max
else
uscl = 0.
u4scl = 0.
endif
else
uscl = 0.
u4scl = 0.
endif
if (usefullleith .and. calcleith) then
grdvrt = 0.25d0*(vrtdx(i-1,j)*vrtdx(i-1,j)+vrtdx(i,j)*
$vrtdx(i,j)+vrtdy(i,j-1)*vrtdy(i,j-1)+vrtdy(i,j)*vrtdy(i,j))
grddiv = 0.25d0*(divdx(i,j-1)*divdx(i,j-1)+divdx(i,j)*
$divdx(i,j)+divdy(i-1,j)*divdy(i-1,j)+divdy(i,j)*divdy(i,j))
viscah_zlth(i,j) = sqrt(leith2fac*grdvrt+leithd2fac*
$grddiv)*l3
visca4_zlth(i,j) = sqrt(leith4fac*grdvrt+leithd4fac*
$grddiv)*l5
else if (calcleith) then
grdvrt = max(abs(vrtdx(i-1,j)),abs(vrtdx(i,j)))
grdvrt = max(grdvrt,abs(vrtdy(i,j-1)))
grdvrt = max(grdvrt,abs(vrtdy(i,j)))
grddiv = max(abs(divdx(i,j)),abs(divdx(i,j-1)))
grddiv = max(grddiv,abs(divdy(i,j)))
grddiv = max(grddiv,abs(divdy(i-1,j)))
viscah_zlth(i,j) = (leith2fac*grdvrt+leithd2fac*grddiv)*l3
visca4_zlth(i,j) = (leith4fac*grdvrt+leithd4fac*grddiv)*l5
else
viscah_zlth(i,j) = 0.d0
visca4_zlth(i,j) = 0.d0
endif
if (calcsmag) then
viscah_zsmg(i,j) = l2*sqrt(strain(i,j)**2+0.25d0*(tension(
$i,j)**2+tension(i,j-1)**2+tension(i-1,j)**2+tension(i-1,j-1)**2))
visca4_zsmg(i,j) = smag4fac*l2*viscah_zsmg(i,j)
viscah_zsmg(i,j) = smag2fac*viscah_zsmg(i,j)
endif
alin = viscahz+viscahgrid*l2rdt+viscah_zlth(i,j)+
$viscah_zsmg(i,j)
viscah_zmin(i,j) = max(viscahgridmin*l2rdt,uscl)
viscah_z(i,j) = max(viscah_zmin(i,j),alin)
viscah_zmax(i,j) = min(viscahgridmax*l2rdt,viscahmax)
alin = visca4z+visca4grid*l4rdt+visca4_zlth(i,j)+
$visca4_zsmg(i,j)
visca4_zmin(i,j) = max(visca4gridmin*l4rdt,u4scl)
visca4_z(i,j) = max(visca4_zmin(i,j),alin)
visca4_zmax(i,j) = min(visca4gridmax*l4rdt,visca4max)
advisca4_z(i,j) = advisca4_z(i,j)*(0.5-sign(0.5d0,visca4_z(
$i,j)-visca4_zmax(i,j)))
adalin = adalin+advisca4_z(i,j)*(0.5-sign(0.5d0,visca4_zmin(
$i,j)-alin))
advisca4_zmin(i,j) = advisca4_zmin(i,j)+advisca4_z(i,j)*(
$0.5+sign(0.5d0,visca4_zmin(i,j)-alin))
advisca4_z(i,j) = 0.d0
adu4scl = adu4scl+advisca4_zmin(i,j)*(0.5-sign(0.5d0,
$visca4gridmin*l4rdt-u4scl))
advisca4_zmin(i,j) = 0.d0
advisca4_zlth(i,j) = advisca4_zlth(i,j)+adalin
advisca4_zsmg(i,j) = advisca4_zsmg(i,j)+adalin
adalin = 0.d0
adviscah_z(i,j) = adviscah_z(i,j)*(0.5-sign(0.5d0,viscah_z(
$i,j)-viscah_zmax(i,j)))
alin = viscahz+viscahgrid*l2rdt+viscah_zlth(i,j)+
$viscah_zsmg(i,j)
adalin = adalin+adviscah_z(i,j)*(0.5-sign(0.5d0,viscah_zmin(
$i,j)-alin))
adviscah_zmin(i,j) = adviscah_zmin(i,j)+adviscah_z(i,j)*(
$0.5+sign(0.5d0,viscah_zmin(i,j)-alin))
adviscah_z(i,j) = 0.d0
aduscl = aduscl+adviscah_zmin(i,j)*(0.5-sign(0.5d0,
$viscahgridmin*l2rdt-uscl))
adviscah_zmin(i,j) = 0.d0
adviscah_zlth(i,j) = adviscah_zlth(i,j)+adalin
adviscah_zsmg(i,j) = adviscah_zsmg(i,j)+adalin
adalin = 0.d0
if (calcsmag) then
adviscah_zsmg(i,j) = adviscah_zsmg(i,j)*smag2fac
adviscah_zsmg(i,j) = adviscah_zsmg(i,j)+advisca4_zsmg(i,j)
$*smag4fac*l2
advisca4_zsmg(i,j) = 0.d0
adviscah_zsmgh = adviscah_zsmg(i,j)*l2*(1./(2.*sqrt(
$strain(i,j)**2+0.25d0*(tension(i,j)**2+tension(i,j-1)**2+tension(
$i-1,j)**2+tension(i-1,j-1)**2))))
adstrain(i,j) = adstrain(i,j)+2*adviscah_zsmgh*strain(i,j)
adtension(i-1,j-1) = adtension(i-1,j-1)+0.5d0*
$adviscah_zsmgh*tension(i-1,j-1)
adtension(i,j-1) = adtension(i,j-1)+0.5d0*adviscah_zsmgh*
$tension(i,j-1)
adtension(i-1,j) = adtension(i-1,j)+0.5d0*adviscah_zsmgh*
$tension(i-1,j)
adtension(i,j) = adtension(i,j)+0.5d0*adviscah_zsmgh*
$tension(i,j)
adviscah_zsmg(i,j) = 0.d0
endif
if (usefullleith .and. calcleith) then
advisca4_zlthh = advisca4_zlth(i,j)*1./(2.*sqrt(leith4fac*
$grdvrt+leithd4fac*grddiv))*l5
adgrddiv = adgrddiv+advisca4_zlthh*leithd4fac
adgrdvrt = adgrdvrt+advisca4_zlthh*leith4fac
advisca4_zlth(i,j) = 0.d0
adviscah_zlthh = adviscah_zlth(i,j)*1./(2.*sqrt(leith2fac*
$grdvrt+leithd2fac*grddiv))*l3
adgrddiv = adgrddiv+adviscah_zlthh*leithd2fac
adgrdvrt = adgrdvrt+adviscah_zlthh*leith2fac
adviscah_zlth(i,j) = 0.d0
addivdx(i,j-1) = addivdx(i,j-1)+0.5d0*adgrddiv*divdx(i,j-
$1)
addivdx(i,j) = addivdx(i,j)+0.5d0*adgrddiv*divdx(i,j)
addivdy(i-1,j) = addivdy(i-1,j)+0.5d0*adgrddiv*divdy(i-1,
$j)
addivdy(i,j) = addivdy(i,j)+0.5d0*adgrddiv*divdy(i,j)
adgrddiv = 0.d0
advrtdx(i-1,j) = advrtdx(i-1,j)+0.5d0*adgrdvrt*vrtdx(i-1,
$j)
advrtdx(i,j) = advrtdx(i,j)+0.5d0*adgrdvrt*vrtdx(i,j)
advrtdy(i,j-1) = advrtdy(i,j-1)+0.5d0*adgrdvrt*vrtdy(i,j-
$1)
advrtdy(i,j) = advrtdy(i,j)+0.5d0*adgrdvrt*vrtdy(i,j)
adgrdvrt = 0.d0
else if (calcleith) then
grdvrt = max(abs(vrtdx(i-1,j)),abs(vrtdx(i,j)))
grdvrt = max(grdvrt,abs(vrtdy(i,j-1)))
grddiv = max(abs(divdx(i,j)),abs(divdx(i,j-1)))
grddiv = max(grddiv,abs(divdy(i,j)))
adgrddiv = adgrddiv+advisca4_zlth(i,j)*leithd4fac*l5
adgrdvrt = adgrdvrt+advisca4_zlth(i,j)*leith4fac*l5
advisca4_zlth(i,j) = 0.d0
adgrddiv = adgrddiv+adviscah_zlth(i,j)*leithd2fac*l3
adgrdvrt = adgrdvrt+adviscah_zlth(i,j)*leith2fac*l3
adviscah_zlth(i,j) = 0.d0
grddivh = abs(divdy(i-1,j))
adgrddivh = adgrddiv*(0.5-sign(0.5d0,grddiv-grddivh))
adgrddiv = adgrddiv*(0.5+sign(0.5d0,grddiv-grddivh))
addivdy(i-1,j) = addivdy(i-1,j)+adgrddivh*sign(1.d0,divdy(
$i-1,j))
grddiv = max(abs(divdx(i,j)),abs(divdx(i,j-1)))
grddivi = abs(divdy(i,j))
adgrddivi = adgrddiv*(0.5-sign(0.5d0,grddiv-grddivi))
adgrddiv = adgrddiv*(0.5+sign(0.5d0,grddiv-grddivi))
addivdy(i,j) = addivdy(i,j)+adgrddivi*sign(1.d0,divdy(i,j)
$)
grddivj = abs(divdx(i,j))
grddivk = abs(divdx(i,j-1))
adgrddivj = adgrddiv*(0.5+sign(0.5d0,grddivj-grddivk))
adgrddivk = adgrddiv*(0.5-sign(0.5d0,grddivj-grddivk))
addivdx(i,j-1) = addivdx(i,j-1)+adgrddivk*sign(1.d0,divdx(
$i,j-1))
addivdx(i,j) = addivdx(i,j)+adgrddivj*sign(1.d0,divdx(i,j)
$)
adgrddiv = 0.d0
grdvrth = abs(vrtdy(i,j))
adgrdvrth = adgrdvrt*(0.5-sign(0.5d0,grdvrt-grdvrth))
adgrdvrt = adgrdvrt*(0.5+sign(0.5d0,grdvrt-grdvrth))
advrtdy(i,j) = advrtdy(i,j)+adgrdvrth*sign(1.d0,vrtdy(i,j)
$)
grdvrt = max(abs(vrtdx(i-1,j)),abs(vrtdx(i,j)))
grdvrti = abs(vrtdy(i,j-1))
adgrdvrti = adgrdvrt*(0.5-sign(0.5d0,grdvrt-grdvrti))
adgrdvrt = adgrdvrt*(0.5+sign(0.5d0,grdvrt-grdvrti))
advrtdy(i,j-1) = advrtdy(i,j-1)+adgrdvrti*sign(1.d0,vrtdy(
$i,j-1))
grdvrtj = abs(vrtdx(i-1,j))
grdvrtk = abs(vrtdx(i,j))
adgrdvrtj = adgrdvrt*(0.5+sign(0.5d0,grdvrtj-grdvrtk))
adgrdvrtk = adgrdvrt*(0.5-sign(0.5d0,grdvrtj-grdvrtk))
advrtdx(i,j) = advrtdx(i,j)+adgrdvrtk*sign(1.d0,vrtdx(i,j)
$)
advrtdx(i-1,j) = advrtdx(i-1,j)+adgrdvrtj*sign(1.d0,vrtdx(
$i-1,j))
adgrdvrt = 0.d0
else
advisca4_zlth(i,j) = 0.d0
adviscah_zlth(i,j) = 0.d0
endif
if (viscahre_max .gt. 0. .or. visca4re_max .gt. 0.) then
if (kezpt .gt. 0.) then
adkezpt = adkezpt+adu4scl*1./(2.*sqrt(kezpt))*l3*
$visca4re_max
adu4scl = 0.d0
adkezpt = adkezpt+aduscl*1./(2.*sqrt(kezpt*l2))*
$viscahre_max*l2
aduscl = 0.d0
else
adu4scl = 0.d0
aduscl = 0.d0
endif
adke(i-1,j-1) = adke(i-1,j-1)+0.25d0*adkezpt
adke(i,j-1) = adke(i,j-1)+0.25d0*adkezpt
adke(i-1,j) = adke(i-1,j)+0.25d0*adkezpt
adke(i,j) = adke(i,j)+0.25d0*adkezpt
adkezpt = 0.d0
else
adu4scl = 0.d0
aduscl = 0.d0
endif
advisca4_d(i,j) = advisca4_d(i,j)*(0.5-sign(0.5d0,visca4_d(
$i,j)-visca4_dmax(i,j)))
l4rdt = l4rdt_d(i,j,bi,bj)
alin = visca4d+visca4grid*l4rdt+visca4_dlth(i,j)+
$visca4_dsmg(i,j)
adalin = adalin+advisca4_d(i,j)*(0.5-sign(0.5d0,visca4_dmin(
$i,j)-alin))
advisca4_dmin(i,j) = advisca4_dmin(i,j)+advisca4_d(i,j)*(
$0.5+sign(0.5d0,visca4_dmin(i,j)-alin))
advisca4_d(i,j) = 0.d0
l3 = l3_d(i,j,bi,bj)
l4rdt = l4rdt_d(i,j,bi,bj)
if (visca4re_max .gt. 0. .and. ke(i,j) .gt. 0.) then
u4scl = sqrt(ke(i,j))*l3*visca4re_max
else
u4scl = 0.
endif
adu4scl = adu4scl+advisca4_dmin(i,j)*(0.5-sign(0.5d0,
$visca4gridmin*l4rdt-u4scl))
advisca4_dmin(i,j) = 0.d0
advisca4_dlth(i,j) = advisca4_dlth(i,j)+adalin
advisca4_dsmg(i,j) = advisca4_dsmg(i,j)+adalin
adalin = 0.d0
adviscah_d(i,j) = adviscah_d(i,j)*(0.5-sign(0.5d0,viscah_d(
$i,j)-viscah_dmax(i,j)))
l2 = l2_d(i,j,bi,bj)
l2rdt = 0.25d0*recip_dt*l2
alin = viscahd+viscahgrid*l2rdt+viscah_dlth(i,j)+
$viscah_dsmg(i,j)
adalin = adalin+adviscah_d(i,j)*(0.5-sign(0.5d0,viscah_dmin(
$i,j)-alin))
adviscah_dmin(i,j) = adviscah_dmin(i,j)+adviscah_d(i,j)*(
$0.5+sign(0.5d0,viscah_dmin(i,j)-alin))
adviscah_d(i,j) = 0.d0
l2 = l2_d(i,j,bi,bj)
l2rdt = 0.25d0*recip_dt*l2
if (viscahre_max .gt. 0. .and. ke(i,j) .gt. 0.) then
uscl = sqrt(ke(i,j)*l2)*viscahre_max
else
uscl = 0.
endif
aduscl = aduscl+adviscah_dmin(i,j)*(0.5-sign(0.5d0,
$viscahgridmin*l2rdt-uscl))
adviscah_dmin(i,j) = 0.d0
adviscah_dlth(i,j) = adviscah_dlth(i,j)+adalin
adviscah_dsmg(i,j) = adviscah_dsmg(i,j)+adalin
adalin = 0.d0
l2 = l2_d(i,j,bi,bj)
if (calcsmag) then
adviscah_dsmg(i,j) = adviscah_dsmg(i,j)*smag2fac
adviscah_dsmg(i,j) = adviscah_dsmg(i,j)+advisca4_dsmg(i,j)
$*smag4fac*l2
advisca4_dsmg(i,j) = 0.d0
adviscah_dsmgh = adviscah_dsmg(i,j)*l2*(1./(2.*sqrt(
$tension(i,j)**2+0.25d0*(strain(i+1,j)**2+strain(i,j+1)**2+strain(
$i,j)**2+strain(i+1,j+1)**2))))
adstrain(i+1,j+1) = adstrain(i+1,j+1)+0.5d0*
$adviscah_dsmgh*strain(i+1,j+1)
adstrain(i,j+1) = adstrain(i,j+1)+0.5d0*adviscah_dsmgh*
$strain(i,j+1)
adstrain(i+1,j) = adstrain(i+1,j)+0.5d0*adviscah_dsmgh*
$strain(i+1,j)
adstrain(i,j) = adstrain(i,j)+0.5d0*adviscah_dsmgh*strain(
$i,j)
adtension(i,j) = adtension(i,j)+2*adviscah_dsmgh*tension(
$i,j)
adviscah_dsmg(i,j) = 0.d0
else
advisca4_dsmg(i,j) = 0.d0
adviscah_dsmg(i,j) = 0.d0
endif
l2 = l2_d(i,j,bi,bj)
l3 = l3_d(i,j,bi,bj)
l5 = l2*l3
if (usefullleith .and. calcleith) then
grdvrt = 0.25d0*(vrtdx(i,j+1)*vrtdx(i,j+1)+vrtdx(i,j)*
$vrtdx(i,j)+vrtdy(i+1,j)*vrtdy(i+1,j)+vrtdy(i,j)*vrtdy(i,j))
grddiv = 0.25d0*(divdx(i+1,j)*divdx(i+1,j)+divdx(i,j)*
$divdx(i,j)+divdy(i,j+1)*divdy(i,j+1)+divdy(i,j)*divdy(i,j))
advisca4_dlthh = advisca4_dlth(i,j)*1./(2.*sqrt(leith4fac*
$grdvrt+leithd4fac*grddiv))*l5
adgrddiv = adgrddiv+advisca4_dlthh*leithd4fac
adgrdvrt = adgrdvrt+advisca4_dlthh*leith4fac
advisca4_dlth(i,j) = 0.d0
adviscah_dlthh = adviscah_dlth(i,j)*1./(2.*sqrt(leith2fac*
$grdvrt+leithd2fac*grddiv))*l3
adgrddiv = adgrddiv+adviscah_dlthh*leithd2fac
adgrdvrt = adgrdvrt+adviscah_dlthh*leith2fac
adviscah_dlth(i,j) = 0.d0
addivdx(i+1,j) = addivdx(i+1,j)+0.5d0*adgrddiv*divdx(i+1,
$j)
addivdx(i,j) = addivdx(i,j)+0.5d0*adgrddiv*divdx(i,j)
addivdy(i,j+1) = addivdy(i,j+1)+0.5d0*adgrddiv*divdy(i,j+
$1)
addivdy(i,j) = addivdy(i,j)+0.5d0*adgrddiv*divdy(i,j)
adgrddiv = 0.d0
advrtdx(i,j+1) = advrtdx(i,j+1)+0.5d0*adgrdvrt*vrtdx(i,j+
$1)
advrtdx(i,j) = advrtdx(i,j)+0.5d0*adgrdvrt*vrtdx(i,j)
advrtdy(i+1,j) = advrtdy(i+1,j)+0.5d0*adgrdvrt*vrtdy(i+1,
$j)
advrtdy(i,j) = advrtdy(i,j)+0.5d0*adgrdvrt*vrtdy(i,j)
adgrdvrt = 0.d0
else if (calcleith) then
grdvrt = max(abs(vrtdx(i,j+1)),abs(vrtdx(i,j)))
grdvrt = max(grdvrt,abs(vrtdy(i+1,j)))
grddiv = max(abs(divdx(i+1,j)),abs(divdx(i,j)))
grddiv = max(grddiv,abs(divdy(i,j+1)))
adgrddiv = adgrddiv+advisca4_dlth(i,j)*leithd4fac*l5
adgrdvrt = adgrdvrt+advisca4_dlth(i,j)*leith4fac*l5
advisca4_dlth(i,j) = 0.d0
adgrddiv = adgrddiv+adviscah_dlth(i,j)*leithd2fac*l3
adgrdvrt = adgrdvrt+adviscah_dlth(i,j)*leith2fac*l3
adviscah_dlth(i,j) = 0.d0
grddivl = abs(divdy(i,j))
adgrddivl = adgrddiv*(0.5-sign(0.5d0,grddiv-grddivl))
adgrddiv = adgrddiv*(0.5+sign(0.5d0,grddiv-grddivl))
addivdy(i,j) = addivdy(i,j)+adgrddivl*sign(1.d0,divdy(i,j)
$)
grddiv = max(abs(divdx(i+1,j)),abs(divdx(i,j)))
grddivm = abs(divdy(i,j+1))
adgrddivm = adgrddiv*(0.5-sign(0.5d0,grddiv-grddivm))
adgrddiv = adgrddiv*(0.5+sign(0.5d0,grddiv-grddivm))
addivdy(i,j+1) = addivdy(i,j+1)+adgrddivm*sign(1.d0,divdy(
$i,j+1))
grddivn = abs(divdx(i+1,j))
grddivo = abs(divdx(i,j))
adgrddivn = adgrddiv*(0.5+sign(0.5d0,grddivn-grddivo))
adgrddivo = adgrddiv*(0.5-sign(0.5d0,grddivn-grddivo))
addivdx(i,j) = addivdx(i,j)+adgrddivo*sign(1.d0,divdx(i,j)
$)
addivdx(i+1,j) = addivdx(i+1,j)+adgrddivn*sign(1.d0,divdx(
$i+1,j))
adgrddiv = 0.d0
grdvrtl = abs(vrtdy(i,j))
adgrdvrtl = adgrdvrt*(0.5-sign(0.5d0,grdvrt-grdvrtl))
adgrdvrt = adgrdvrt*(0.5+sign(0.5d0,grdvrt-grdvrtl))
advrtdy(i,j) = advrtdy(i,j)+adgrdvrtl*sign(1.d0,vrtdy(i,j)
$)
grdvrt = max(abs(vrtdx(i,j+1)),abs(vrtdx(i,j)))
grdvrtm = abs(vrtdy(i+1,j))
adgrdvrtm = adgrdvrt*(0.5-sign(0.5d0,grdvrt-grdvrtm))
adgrdvrt = adgrdvrt*(0.5+sign(0.5d0,grdvrt-grdvrtm))
advrtdy(i+1,j) = advrtdy(i+1,j)+adgrdvrtm*sign(1.d0,vrtdy(
$i+1,j))
grdvrtn = abs(vrtdx(i,j+1))
grdvrto = abs(vrtdx(i,j))
adgrdvrtn = adgrdvrt*(0.5+sign(0.5d0,grdvrtn-grdvrto))
adgrdvrto = adgrdvrt*(0.5-sign(0.5d0,grdvrtn-grdvrto))
advrtdx(i,j) = advrtdx(i,j)+adgrdvrto*sign(1.d0,vrtdx(i,j)
$)
advrtdx(i,j+1) = advrtdx(i,j+1)+adgrdvrtn*sign(1.d0,vrtdx(
$i,j+1))
adgrdvrt = 0.d0
else
advisca4_dlth(i,j) = 0.d0
adviscah_dlth(i,j) = 0.d0
endif
l3 = l3_d(i,j,bi,bj)
if (visca4re_max .gt. 0. .and. ke(i,j) .gt. 0.) then
adke(i,j) = adke(i,j)+adu4scl*1./(2.*sqrt(ke(i,j)))*l3*
$visca4re_max
adu4scl = 0.d0
else
adu4scl = 0.d0
endif
l2 = l2_d(i,j,bi,bj)
if (viscahre_max .gt. 0. .and. ke(i,j) .gt. 0.) then
adke(i,j) = adke(i,j)+aduscl*1./(2.*sqrt(ke(i,j)*l2))*
$viscahre_max*l2
aduscl = 0.d0
else
aduscl = 0.d0
endif
end do
end do
if (calcleith) then
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx
advort3(i,j+1) = advort3(i,j+1)+advrtdy(i,j)*recip_dyg(i,
$j,bi,bj)*maskw(i,j,k,bi,bj)
advort3(i,j) = advort3(i,j)-advrtdy(i,j)*recip_dyg(i,j,bi,
$bj)*maskw(i,j,k,bi,bj)
advrtdy(i,j) = 0.d0
end do
end do
do j = 2-oly, sny+oly
do i = 2-olx, snx+olx-1
advort3(i+1,j) = advort3(i+1,j)+advrtdx(i,j)*recip_dxg(i,
$j,bi,bj)*masks(i,j,k,bi,bj)
advort3(i,j) = advort3(i,j)-advrtdx(i,j)*recip_dxg(i,j,bi,
$bj)*masks(i,j,k,bi,bj)
advrtdx(i,j) = 0.d0
end do
end do
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
adhdiv(i,j-1) = adhdiv(i,j-1)-addivdy(i,j)*recip_dyc(i,j,
$bi,bj)
adhdiv(i,j) = adhdiv(i,j)+addivdy(i,j)*recip_dyc(i,j,bi,
$bj)
addivdy(i,j) = 0.d0
end do
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 2, .false. ,adhdiv )
endif
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
adhdiv(i-1,j) = adhdiv(i-1,j)-addivdx(i,j)*recip_dxc(i,j,
$bi,bj)
adhdiv(i,j) = adhdiv(i,j)+addivdx(i,j)*recip_dxc(i,j,bi,
$bj)
addivdx(i,j) = 0.d0
end do
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 1, .false. ,adhdiv )
endif
endif
endif
end
subroutine mdmom_calc_visc( bi, bj, k, viscah_z, viscah_d,
$visca4_z, visca4_d, harmonic, biharmonic, usevariableviscosity,
$hdiv, vort3, tension, strain, ke, hfacz, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision pi
parameter ( pi = 3.1415926535898d0 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_mom_ijk_loop_visca4_zsm(2116800)
common /cadvisca4_zsmg/ comlev1_mom_ijk_loop_visca4_zsm
real*8 comlev1_mom_ijk_loop_viscah_zsm(2116800)
common /cadviscah_zsmg/ comlev1_mom_ijk_loop_viscah_zsm
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision l2_d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l2_z(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l3_d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l3_z(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l4rdt_d(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision l4rdt_z(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dt
common /mom_visc_l/ l2_d, l2_z, l3_d, l3_z, l4rdt_d, l4rdt_z,
$recip_dt
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
integer ikey
integer key
common /tamckeys/ key, ikey
C==============================================
C declare arguments
C==============================================
integer bi
logical biharmonic
integer bj
logical harmonic
double precision hdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
integer mythid
double precision strain(1-olx:snx+olx,1-oly:sny+oly)
double precision tension(1-olx:snx+olx,1-oly:sny+oly)
logical usevariableviscosity
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision alin
logical calcleith
logical calcsmag
double precision divdx(1-olx:snx+olx,1-oly:sny+oly)
double precision divdy(1-olx:snx+olx,1-oly:sny+oly)
double precision grddiv
double precision grdvrt
integer i
integer j
double precision kezpt
double precision l2
double precision l2rdt
double precision l3
double precision l4rdt
double precision l5
double precision leith2fac
double precision leith4fac
double precision leithd2fac
double precision leithd4fac
integer lockey_1
integer lockey_2
integer max1
integer max2
integer max3
double precision smag2fac
double precision smag4fac
double precision u4scl
double precision uscl
double precision visca4_dlth(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_dmax(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_dmin(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_dsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zlth(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zmax(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zmin(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_zsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4re_max
double precision viscah_dlth(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_dmax(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_dmin(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_dsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zlth(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zmax(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zmin(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_zsmg(1-olx:snx+olx,1-oly:sny+oly)
double precision viscahre_max
double precision vrtdx(1-olx:snx+olx,1-oly:sny+oly)
double precision vrtdy(1-olx:snx+olx,1-oly:sny+oly)
C**********************************************
C executable statements of routine
C**********************************************
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
ikey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
lockey_1 = (ikey-1)*nr+k
usevariableviscosity = viscahgrid .ne. 0. .or. visca4grid .ne. 0.
$.or. viscc2leith .ne. 0. .or. viscc2leithd .ne. 0. .or.
$viscc4leith .ne. 0. .or. viscc4leithd .ne. 0. .or. viscc2smag
$.ne. 0. .or. viscc4smag .ne. 0.
harmonic = viscah .ne. 0. .or. viscahd .ne. 0. .or. viscahz .ne.
$0. .or. viscahgrid .ne. 0. .or. viscc2leith .ne. 0. .or.
$viscc2leithd .ne. 0. .or. viscc2smag .ne. 0.
biharmonic = visca4 .ne. 0. .or. visca4d .ne. 0. .or. visca4z
$.ne. 0. .or. visca4grid .ne. 0. .or. viscc4leith .ne. 0. .or.
$viscc4leithd .ne. 0. .or. viscc4smag .ne. 0.
if (usevariableviscosity) then
if (harmonic .and. viscahremax .ne. 0.) then
viscahre_max = sqrt(2.d0)/viscahremax
else
viscahre_max = 0.d0
endif
if (biharmonic .and. visca4remax .ne. 0.) then
visca4re_max = 0.125d0*sqrt(2.d0)/visca4remax
else
visca4re_max = 0.d0
endif
calcleith = viscc2leith .ne. 0. .or. viscc2leithd .ne. 0. .or.
$viscc4leith .ne. 0. .or. viscc4leithd .ne. 0.
calcsmag = viscc2smag .ne. 0. .or. viscc4smag .ne. 0.
if (calcsmag) then
smag2fac = (viscc2smag/pi)**2
smag4fac = 0.125d0*(viscc4smag/pi)**2
else
smag2fac = 0.d0
smag4fac = 0.d0
endif
if (calcleith) then
if (usefullleith) then
leith2fac = (viscc2leith/pi)**6
leithd2fac = (viscc2leithd/pi)**6
leith4fac = 0.015625d0*(viscc4leith/pi)**6
leithd4fac = 0.015625d0*(viscc4leithd/pi)**6
else
leith2fac = (viscc2leith/pi)**3
leithd2fac = (viscc2leithd/pi)**3
leith4fac = 0.125d0*(viscc4leith/pi)**3
leithd4fac = 0.125d0*(viscc4leithd/pi)**3
endif
else
leith2fac = 0.d0
leith4fac = 0.d0
leithd2fac = 0.d0
leithd4fac = 0.d0
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
viscah_d(i,j) = viscahd
viscah_z(i,j) = viscahz
visca4_d(i,j) = visca4d
visca4_z(i,j) = visca4z
visca4_zsmg(i,j) = 0.d0
viscah_zsmg(i,j) = 0.d0
viscah_dlth(i,j) = 0.d0
visca4_dlth(i,j) = 0.d0
viscah_dsmg(i,j) = 0.d0
visca4_dsmg(i,j) = 0.d0
viscah_zlth(i,j) = 0.d0
visca4_zlth(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
divdx(i,j) = 0.
divdy(i,j) = 0.
vrtdx(i,j) = 0.
vrtdy(i,j) = 0.
end do
end do
if (calcleith) then
if (usecubedsphereexchange) then
call fill_cs_corner_tr_rl( 1, .false. ,hdiv,bi,bj,mythid )
endif
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
divdx(i,j) = (hdiv(i,j)-hdiv(i-1,j))*recip_dxc(i,j,bi,bj)
end do
end do
if (usecubedsphereexchange) then
call fill_cs_corner_tr_rl( 2, .false. ,hdiv,bi,bj,mythid )
endif
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
divdy(i,j) = (hdiv(i,j)-hdiv(i,j-1))*recip_dyc(i,j,bi,bj)
end do
end do
do j = 2-oly, sny+oly
do i = 2-olx, snx+olx-1
vrtdx(i,j) = (vort3(i+1,j)-vort3(i,j))*recip_dxg(i,j,bi,
$bj)*masks(i,j,k,bi,bj)
end do
end do
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx
vrtdy(i,j) = (vort3(i,j+1)-vort3(i,j))*recip_dyg(i,j,bi,
$bj)*maskw(i,j,k,bi,bj)
end do
end do
endif
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
lockey_2 = i+olx+(snx+2*olx)*(j+oly-1)+(snx+2*olx)*(sny+2*
$oly)*(lockey_1-1)
comlev1_mom_ijk_loop_visca4_zsm(lockey_2) = visca4_zsmg(i,j)
comlev1_mom_ijk_loop_viscah_zsm(lockey_2) = viscah_zsmg(i,j)
l2 = l2_d(i,j,bi,bj)
l2rdt = 0.25d0*recip_dt*l2
l3 = l3_d(i,j,bi,bj)
l4rdt = l4rdt_d(i,j,bi,bj)
l5 = l2*l3
if (viscahre_max .gt. 0. .and. ke(i,j) .gt. 0.) then
uscl = sqrt(ke(i,j)*l2)*viscahre_max
else
uscl = 0.
endif
if (visca4re_max .gt. 0. .and. ke(i,j) .gt. 0.) then
u4scl = sqrt(ke(i,j))*l3*visca4re_max
else
u4scl = 0.
endif
if (usefullleith .and. calcleith) then
grdvrt = 0.25d0*(vrtdx(i,j+1)*vrtdx(i,j+1)+vrtdx(i,j)*
$vrtdx(i,j)+vrtdy(i+1,j)*vrtdy(i+1,j)+vrtdy(i,j)*vrtdy(i,j))
grddiv = 0.25d0*(divdx(i+1,j)*divdx(i+1,j)+divdx(i,j)*
$divdx(i,j)+divdy(i,j+1)*divdy(i,j+1)+divdy(i,j)*divdy(i,j))
viscah_dlth(i,j) = sqrt(leith2fac*grdvrt+leithd2fac*
$grddiv)*l3
visca4_dlth(i,j) = sqrt(leith4fac*grdvrt+leithd4fac*
$grddiv)*l5
else if (calcleith) then
grdvrt = max(abs(vrtdx(i,j+1)),abs(vrtdx(i,j)))
grdvrt = max(grdvrt,abs(vrtdy(i+1,j)))
grdvrt = max(grdvrt,abs(vrtdy(i,j)))
grddiv = max(abs(divdx(i+1,j)),abs(divdx(i,j)))
grddiv = max(grddiv,abs(divdy(i,j+1)))
grddiv = max(grddiv,abs(divdy(i,j)))
viscah_dlth(i,j) = (leith2fac*grdvrt+leithd2fac*grddiv)*l3
visca4_dlth(i,j) = (leith4fac*grdvrt+leithd4fac*grddiv)*l5
else
viscah_dlth(i,j) = 0.d0
visca4_dlth(i,j) = 0.d0
endif
if (calcsmag) then
viscah_dsmg(i,j) = l2*sqrt(tension(i,j)**2+0.25d0*(strain(
$i+1,j)**2+strain(i,j+1)**2+strain(i,j)**2+strain(i+1,j+1)**2))
visca4_dsmg(i,j) = smag4fac*l2*viscah_dsmg(i,j)
viscah_dsmg(i,j) = smag2fac*viscah_dsmg(i,j)
else
viscah_dsmg(i,j) = 0.d0
visca4_dsmg(i,j) = 0.d0
endif
alin = viscahd+viscahgrid*l2rdt+viscah_dlth(i,j)+
$viscah_dsmg(i,j)
viscah_dmin(i,j) = max(viscahgridmin*l2rdt,uscl)
viscah_d(i,j) = max(viscah_dmin(i,j),alin)
viscah_dmax(i,j) = min(viscahgridmax*l2rdt,viscahmax)
viscah_d(i,j) = min(viscah_dmax(i,j),viscah_d(i,j))
alin = visca4d+visca4grid*l4rdt+visca4_dlth(i,j)+
$visca4_dsmg(i,j)
visca4_dmin(i,j) = max(visca4gridmin*l4rdt,u4scl)
visca4_d(i,j) = max(visca4_dmin(i,j),alin)
visca4_dmax(i,j) = min(visca4gridmax*l4rdt,visca4max)
visca4_d(i,j) = min(visca4_dmax(i,j),visca4_d(i,j))
l2 = l2_z(i,j,bi,bj)
l2rdt = 0.25d0*recip_dt*l2
l3 = l3_z(i,j,bi,bj)
l4rdt = l4rdt_z(i,j,bi,bj)
l5 = l2*l3
if (viscahre_max .gt. 0. .or. visca4re_max .gt. 0.) then
kezpt = 0.25d0*(ke(i,j)+ke(i-1,j-1)+ke(i-1,j)+ke(i,j-1))
if (kezpt .gt. 0.) then
uscl = sqrt(kezpt*l2)*viscahre_max
u4scl = sqrt(kezpt)*l3*visca4re_max
else
uscl = 0.
u4scl = 0.
endif
else
uscl = 0.
u4scl = 0.
endif
if (usefullleith .and. calcleith) then
grdvrt = 0.25d0*(vrtdx(i-1,j)*vrtdx(i-1,j)+vrtdx(i,j)*
$vrtdx(i,j)+vrtdy(i,j-1)*vrtdy(i,j-1)+vrtdy(i,j)*vrtdy(i,j))
grddiv = 0.25d0*(divdx(i,j-1)*divdx(i,j-1)+divdx(i,j)*
$divdx(i,j)+divdy(i-1,j)*divdy(i-1,j)+divdy(i,j)*divdy(i,j))
viscah_zlth(i,j) = sqrt(leith2fac*grdvrt+leithd2fac*
$grddiv)*l3
visca4_zlth(i,j) = sqrt(leith4fac*grdvrt+leithd4fac*
$grddiv)*l5
else if (calcleith) then
grdvrt = max(abs(vrtdx(i-1,j)),abs(vrtdx(i,j)))
grdvrt = max(grdvrt,abs(vrtdy(i,j-1)))
grdvrt = max(grdvrt,abs(vrtdy(i,j)))
grddiv = max(abs(divdx(i,j)),abs(divdx(i,j-1)))
grddiv = max(grddiv,abs(divdy(i,j)))
grddiv = max(grddiv,abs(divdy(i-1,j)))
viscah_zlth(i,j) = (leith2fac*grdvrt+leithd2fac*grddiv)*l3
visca4_zlth(i,j) = (leith4fac*grdvrt+leithd4fac*grddiv)*l5
else
viscah_zlth(i,j) = 0.d0
visca4_zlth(i,j) = 0.d0
endif
if (calcsmag) then
viscah_zsmg(i,j) = l2*sqrt(strain(i,j)**2+0.25d0*(tension(
$i,j)**2+tension(i,j-1)**2+tension(i-1,j)**2+tension(i-1,j-1)**2))
visca4_zsmg(i,j) = smag4fac*l2*viscah_zsmg(i,j)
viscah_zsmg(i,j) = smag2fac*viscah_zsmg(i,j)
endif
alin = viscahz+viscahgrid*l2rdt+viscah_zlth(i,j)+
$viscah_zsmg(i,j)
viscah_zmin(i,j) = max(viscahgridmin*l2rdt,uscl)
viscah_z(i,j) = max(viscah_zmin(i,j),alin)
viscah_zmax(i,j) = min(viscahgridmax*l2rdt,viscahmax)
viscah_z(i,j) = min(viscah_zmax(i,j),viscah_z(i,j))
alin = visca4z+visca4grid*l4rdt+visca4_zlth(i,j)+
$visca4_zsmg(i,j)
visca4_zmin(i,j) = max(visca4gridmin*l4rdt,u4scl)
visca4_z(i,j) = max(visca4_zmin(i,j),alin)
visca4_zmax(i,j) = min(visca4gridmax*l4rdt,visca4max)
visca4_z(i,j) = min(visca4_zmax(i,j),visca4_z(i,j))
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
viscah_d(i,j) = viscahd
viscah_z(i,j) = viscahz
visca4_d(i,j) = visca4d
visca4_z(i,j) = visca4z
end do
end do
endif
end
subroutine admom_fluxform( bi, bj, imin, imax, jmin, jmax, k, kup,
$ kdown, kapparu, kapparv, adfveru, adfverv, adgudiss, adgvdiss,
$mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adfveru(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adfverv(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adgudiss(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvdiss(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
integer kdown
integer kup
integer mythid
C==============================================
C declare local variables
C==============================================
double precision adcf(1-olx:snx+olx,1-oly:sny+oly)
double precision adfmer(1-olx:snx+olx,1-oly:sny+oly)
double precision adfvrdw(1-olx:snx+olx,1-oly:sny+oly)
double precision adfvrup(1-olx:snx+olx,1-oly:sny+oly)
double precision adfzon(1-olx:snx+olx,1-oly:sny+oly)
double precision adhdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
double precision admt(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtransu(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtransv(1-olx:snx+olx,1-oly:sny+oly)
double precision adstrain(1-olx:snx+olx,1-oly:sny+oly)
double precision adtension(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adv4f(1-olx:snx+olx,1-oly:sny+oly)
double precision advf(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision ahdudxfac
double precision ahdudyfac
double precision ahdvdxfac
double precision ahdvdyfac
double precision ardudrfac
double precision ardvdrfac
logical biharmonic
logical bottomdragterms
double precision fufac
double precision fvfac
logical harmonic
double precision hdiv(1-olx:snx+olx,1-oly:sny+oly)
integer help_h
integer help_i
integer help_j
integer help_k
integer help_l
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
double precision mtfacu
double precision mtfacv
double precision mtnhfacu
double precision mtnhfacv
integer myiter
double precision mytime
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision rtransu(1-olx:snx+olx,1-oly:sny+oly)
double precision rtransv(1-olx:snx+olx,1-oly:sny+oly)
double precision rveldudrfac
double precision rveldvdrfac
double precision sidemaskfac
double precision strain(1-olx:snx+olx,1-oly:sny+oly)
double precision tension(1-olx:snx+olx,1-oly:sny+oly)
double precision ududxfac
double precision udvdxfac
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
logical usevariableviscosity
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision v4f(1-olx:snx+olx,1-oly:sny+oly)
double precision vdudyfac
double precision vdvdyfac
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfmer(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfvrdw(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfvrup(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfzon(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adhdiv(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adke(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
admt(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrtransu(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrtransv(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adstrain(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtension(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adufld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adutrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adv4f(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advfld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_d(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_z(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_d(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_z(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advort3(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advtrans(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
v4f(i,j) = 0.
rtransu(i,j) = 0.
rtransv(i,j) = 0.
hdiv(i,j) = 0.
vort3(i,j) = 0.
strain(i,j) = 0.
tension(i,j) = 0.
end do
end do
ududxfac = affacmom*1.
ahdudxfac = vffacmom*1.
vdudyfac = affacmom*1.
ahdudyfac = vffacmom*1.
rveldudrfac = affacmom*1.
ardudrfac = vffacmom*1.
mtfacu = mtfacmom*1.
mtnhfacu = 1.
fufac = cffacmom*1.
udvdxfac = affacmom*1.
ahdvdxfac = vffacmom*1.
vdvdyfac = affacmom*1.
ahdvdyfac = vffacmom*1.
rveldvdrfac = affacmom*1.
ardvdrfac = vffacmom*1.
mtfacv = mtfacmom*1.
mtnhfacv = 1.
fvfac = cffacmom*1.
if (implicitviscosity) then
ardudrfac = 0.
ardvdrfac = 0.
endif
if (no_slip_sides) then
sidemaskfac = sidedragfactor
else
sidemaskfac = 0.d0
endif
if (no_slip_bottom .or. bottomdragquadratic .ne. 0. .or.
$bottomdraglinear .ne. 0.) then
bottomdragterms = .true.
else
bottomdragterms = .false.
endif
call mom_calc_hfacz( bi,bj,k,hfacz,r_hfacz,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
xa(i,j) = dyg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacw(i,j,k,bi,bj)
ya(i,j) = dxg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacs(i,j,k,bi,bj)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
ufld(i,j) = uvel(i,j,k,bi,bj)
vfld(i,j) = vvel(i,j,k,bi,bj)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
utrans(i,j) = ufld(i,j)*xa(i,j)*rhofacc(k)
vtrans(i,j) = vfld(i,j)*ya(i,j)*rhofacc(k)
end do
end do
call mom_calc_ke( bi,bj,k,2,ufld,vfld,ke,mythid )
if (momviscosity) then
call mom_calc_hdiv( bi,bj,k,2,ufld,vfld,hdiv,mythid )
call mom_calc_relvort3( bi,bj,k,ufld,vfld,hfacz,vort3,mythid )
call mom_calc_tension( bi,bj,k,ufld,vfld,tension,mythid )
call mom_calc_strain( bi,bj,k,ufld,vfld,hfacz,strain,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
vort3(i,j) = sidemaskfac*vort3(i,j)
strain(i,j) = sidemaskfac*strain(i,j)
endif
end do
end do
endif
if (momadvection .and. k .eq. 1) then
call mom_calc_rtrans( k,bi,bj,rtransu,rtransv,mytime,myiter,
$mythid )
endif
if (momadvection) then
help_h = k+1
call mom_calc_rtrans( help_h,bi,bj,rtransu,rtransv,mytime,
$myiter,mythid )
endif
if (momviscosity) then
call mom_calc_visc( bi,bj,k,viscah_z,viscah_d,visca4_z,visca4_d,
$harmonic,biharmonic,usevariableviscosity,hdiv,vort3,tension,
$strain,ke,hfacz,mythid )
endif
if (momviscosity) then
if (biharmonic) then
call mom_u_del2u( bi,bj,k,ufld,hfacz,v4f,mythid )
endif
endif
do j = jmin, jmax
do i = imin, imax
adgvdiss(i,j) = adgvdiss(i,j)*masks(i,j,k,bi,bj)
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)*masks(i,j,k,bi,bj)
adgudiss(i,j) = adgudiss(i,j)*maskw(i,j,k,bi,bj)
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)*maskw(i,j,k,bi,bj)
end do
end do
if (use3dcoriolis) then
if (usingcurvilineargrid) then
do j = jmin, jmax
do i = imin, imax
adcf(i,j) = adcf(i,j)+adgv(i,j,k,bi,bj)*fvfac
end do
end do
call admom_v_coriolis_nh( bi,bj,k,adwvel,adcf )
endif
do j = jmin, jmax
do i = imin, imax
adcf(i,j) = adcf(i,j)+adgu(i,j,k,bi,bj)*fufac
end do
end do
call admom_u_coriolis_nh( bi,bj,k,adwvel,adcf )
endif
if ( .not. usecdscheme) then
do j = jmin, jmax
do i = imin, imax
adcf(i,j) = adcf(i,j)+adgv(i,j,k,bi,bj)*fvfac
end do
end do
call admom_v_coriolis( bi,bj,k,adufld,adcf )
do j = jmin, jmax
do i = imin, imax
adcf(i,j) = adcf(i,j)+adgu(i,j,k,bi,bj)*fufac
end do
end do
call admom_u_coriolis( bi,bj,k,advfld,adcf )
endif
if (usingcylindricalgrid .and. metricterms) then
do j = jmin, jmax
do i = imin, imax
admt(i,j) = admt(i,j)+adgv(i,j,k,bi,bj)*mtfacv
end do
end do
call admom_v_metric_cylinder( bi,bj,ufld,adufld,admt )
endif
if (usingsphericalpolargrid .and. metricterms) then
do j = jmin, jmax
do i = imin, imax
admt(i,j) = admt(i,j)+adgv(i,j,k,bi,bj)*mtfacv
end do
end do
call admom_v_metric_sphere( bi,bj,k,ufld,adufld,admt )
endif
if (usenhmterms) then
do j = jmin, jmax
do i = imin, imax
admt(i,j) = admt(i,j)+adgv(i,j,k,bi,bj)*mtnhfacv
end do
end do
call admom_v_metric_nh( bi,bj,k,vfld,advfld,wvel,adwvel,admt )
endif
if (momviscosity) then
if (biharmonic) then
call mom_v_del2v( bi,bj,k,vfld,hfacz,v4f,mythid )
endif
if (bottomdragterms) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgvdiss(i,j)
end do
end do
call admom_v_bottomdrag( bi,bj,k,vfld,advfld,ke,adke,kapparv,
$advf )
endif
if (no_slip_sides) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgvdiss(i,j)
end do
end do
call admom_v_sidedrag( bi,bj,k,vfld,advfld,v4f,adv4f,hfacz,
$viscah_z,adviscah_z,visca4_z,advisca4_z,advf )
endif
do j = jmin, jmax
do i = imin, imax
adfmer(i,j-1) = adfmer(i,j-1)+adgvdiss(i,j)*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdvdyfac
adfmer(i,j) = adfmer(i,j)-adgvdiss(i,j)*recip_hfacs(i,j,k,
$bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdvdyfac
adfvrdw(i,j) = adfvrdw(i,j)-adgvdiss(i,j)*recip_hfacs(i,j,k,
$bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$rksign*ardvdrfac*recip_rhofacc(k)
adfvrup(i,j) = adfvrup(i,j)+adgvdiss(i,j)*recip_hfacs(i,j,k,
$bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$rksign*ardvdrfac*recip_rhofacc(k)
adfzon(i+1,j) = adfzon(i+1,j)-adgvdiss(i,j)*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdvdxfac
adfzon(i,j) = adfzon(i,j)+adgvdiss(i,j)*recip_hfacs(i,j,k,
$bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdvdxfac
adgvdiss(i,j) = 0.d0
end do
end do
if ( .not. implicitviscosity) then
help_l = k+1
call admom_v_rviscflux( bi,bj,help_l,advvel,kapparv,adfvrdw )
call admom_v_rviscflux( bi,bj,k,advvel,kapparv,adfvrup )
endif
call admom_v_yviscflux( bi,bj,k,vfld,advfld,v4f,adv4f,adfmer,
$viscah_d,adviscah_d,visca4_d,advisca4_d )
call admom_v_xviscflux( bi,bj,k,vfld,advfld,v4f,adv4f,hfacz,
$adfzon,viscah_z,adviscah_z,visca4_z,advisca4_z )
if (biharmonic) then
call admom_v_del2v( bi,bj,k,advfld,hfacz,adv4f )
endif
endif
if (momadvection) then
help_k = k+1
do j = jmin, jmax
do i = imin, imax
adfmer(i,j-1) = adfmer(i,j-1)+adgv(i,j,k,bi,bj)*recip_hfacs(
$i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*vdvdyfac
adfmer(i,j) = adfmer(i,j)-adgv(i,j,k,bi,bj)*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*vdvdyfac
adfverv(i,j,kdown) = adfverv(i,j,kdown)-adgv(i,j,k,bi,bj)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*rksign*rveldvdrfac
adfverv(i,j,kup) = adfverv(i,j,kup)+adgv(i,j,k,bi,bj)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*rksign*rveldvdrfac
adfzon(i+1,j) = adfzon(i+1,j)-adgv(i,j,k,bi,bj)*recip_hfacs(
$i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*udvdxfac
adfzon(i,j) = adfzon(i,j)+adgv(i,j,k,bi,bj)*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*udvdxfac
adgv(i,j,k,bi,bj) = 0.d0
end do
end do
call admom_v_adv_wv( bi,bj,help_k,vvel,advvel,wvel,adwvel,
$rtransv,adrtransv,adfverv(1-olx,1-oly,kdown) )
call admom_v_adv_vv( vtrans,advtrans,vfld,advfld,adfmer )
call admom_v_adv_uv( utrans,adutrans,vfld,advfld,adfzon )
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adgv(i,j,k,bi,bj) = 0.d0
end do
end do
endif
if (usingcylindricalgrid .and. metricterms) then
do j = jmin, jmax
do i = imin, imax
admt(i,j) = admt(i,j)+adgu(i,j,k,bi,bj)*mtfacu
end do
end do
call admom_u_metric_cylinder( bi,bj,ufld,adufld,vfld,advfld,
$admt )
endif
if (usingsphericalpolargrid .and. metricterms) then
do j = jmin, jmax
do i = imin, imax
admt(i,j) = admt(i,j)+adgu(i,j,k,bi,bj)*mtfacu
end do
end do
call admom_u_metric_sphere( bi,bj,k,ufld,adufld,vfld,advfld,
$admt )
endif
if (usenhmterms) then
do j = jmin, jmax
do i = imin, imax
admt(i,j) = admt(i,j)+adgu(i,j,k,bi,bj)*mtnhfacu
end do
end do
call admom_u_metric_nh( bi,bj,k,ufld,adufld,wvel,adwvel,admt )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
v4f(i,j) = 0.
end do
end do
if (momviscosity) then
if (biharmonic) then
call mom_u_del2u( bi,bj,k,ufld,hfacz,v4f,mythid )
endif
if (bottomdragterms) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgudiss(i,j)
end do
end do
call admom_u_bottomdrag( bi,bj,k,ufld,adufld,ke,adke,kapparu,
$advf )
endif
if (no_slip_sides) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgudiss(i,j)
end do
end do
call admom_u_sidedrag( bi,bj,k,ufld,adufld,v4f,adv4f,hfacz,
$viscah_z,adviscah_z,visca4_z,advisca4_z,advf )
endif
do j = jmin, jmax
do i = imin, imax
adfmer(i,j+1) = adfmer(i,j+1)-adgudiss(i,j)*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdudyfac
adfmer(i,j) = adfmer(i,j)+adgudiss(i,j)*recip_hfacw(i,j,k,
$bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdudyfac
adfvrdw(i,j) = adfvrdw(i,j)-adgudiss(i,j)*recip_hfacw(i,j,k,
$bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$rksign*ardudrfac*recip_rhofacc(k)
adfvrup(i,j) = adfvrup(i,j)+adgudiss(i,j)*recip_hfacw(i,j,k,
$bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$rksign*ardudrfac*recip_rhofacc(k)
adfzon(i-1,j) = adfzon(i-1,j)+adgudiss(i,j)*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdudxfac
adfzon(i,j) = adfzon(i,j)-adgudiss(i,j)*recip_hfacw(i,j,k,
$bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$ahdudxfac
adgudiss(i,j) = 0.d0
end do
end do
if ( .not. implicitviscosity) then
help_j = k+1
call admom_u_rviscflux( bi,bj,help_j,aduvel,kapparu,adfvrdw )
call admom_u_rviscflux( bi,bj,k,aduvel,kapparu,adfvrup )
endif
call admom_u_yviscflux( bi,bj,k,ufld,adufld,v4f,adv4f,hfacz,
$adfmer,viscah_z,adviscah_z,visca4_z,advisca4_z )
call admom_u_xviscflux( bi,bj,k,ufld,adufld,v4f,adv4f,adfzon,
$viscah_d,adviscah_d,visca4_d,advisca4_d )
if (biharmonic) then
call admom_u_del2u( bi,bj,k,adufld,hfacz,adv4f )
endif
endif
if (momadvection) then
help_i = k+1
do j = jmin, jmax
do i = imin, imax
adfmer(i,j+1) = adfmer(i,j+1)-adgu(i,j,k,bi,bj)*recip_hfacw(
$i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*vdudyfac
adfmer(i,j) = adfmer(i,j)+adgu(i,j,k,bi,bj)*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*vdudyfac
adfveru(i,j,kdown) = adfveru(i,j,kdown)-adgu(i,j,k,bi,bj)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*rksign*rveldudrfac
adfveru(i,j,kup) = adfveru(i,j,kup)+adgu(i,j,k,bi,bj)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*
$recip_deepfac2c(k)*recip_rhofacc(k)*rksign*rveldudrfac
adfzon(i-1,j) = adfzon(i-1,j)+adgu(i,j,k,bi,bj)*recip_hfacw(
$i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*ududxfac
adfzon(i,j) = adfzon(i,j)-adgu(i,j,k,bi,bj)*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$recip_rhofacc(k)*ududxfac
adgu(i,j,k,bi,bj) = 0.d0
end do
end do
call admom_u_adv_wu( bi,bj,help_i,uvel,aduvel,wvel,adwvel,
$rtransu,adrtransu,adfveru(1-olx,1-oly,kdown) )
call admom_u_adv_vu( vtrans,advtrans,ufld,adufld,adfmer )
call admom_u_adv_uu( utrans,adutrans,ufld,adufld,adfzon )
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adgu(i,j,k,bi,bj) = 0.d0
end do
end do
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
hdiv(i,j) = 0.
end do
end do
if (momviscosity) then
call mom_calc_hdiv( bi,bj,k,2,ufld,vfld,hdiv,mythid )
endif
if (momviscosity) then
call admom_calc_visc( bi,bj,k,adviscah_z,adviscah_d,advisca4_z,
$advisca4_d,hdiv,adhdiv,vort3,advort3,tension,adtension,strain,
$adstrain,ke,adke,mythid )
endif
if (momadvection) then
call admom_calc_rtrans( help_h,bi,bj,adrtransu,adrtransv )
endif
if (momadvection .and. k .eq. 1) then
call mom_calc_rtrans( k,bi,bj,rtransu,rtransv,mytime,myiter,
$mythid )
call admom_v_adv_wv( bi,bj,k,vvel,advvel,wvel,adwvel,rtransv,
$adrtransv,adfverv(1-olx,1-oly,kup) )
call admom_u_adv_wu( bi,bj,k,uvel,aduvel,wvel,adwvel,rtransu,
$adrtransu,adfveru(1-olx,1-oly,kup) )
call admom_calc_rtrans( k,bi,bj,adrtransu,adrtransv )
endif
if (momviscosity) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
adstrain(i,j) = adstrain(i,j)*sidemaskfac
advort3(i,j) = advort3(i,j)*sidemaskfac
endif
end do
end do
call admom_calc_strain( bi,bj,adufld,advfld,adstrain )
call admom_calc_tension( bi,bj,adufld,advfld,adtension )
call admom_calc_relvort3( bi,bj,adufld,advfld,advort3 )
call admom_calc_hdiv( bi,bj,k,2,adufld,advfld,adhdiv )
endif
call admom_calc_ke( bi,bj,k,2,ufld,adufld,vfld,advfld,adke )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
advfld(i,j) = advfld(i,j)+advtrans(i,j)*ya(i,j)*rhofacc(k)
advtrans(i,j) = 0.d0
adufld(i,j) = adufld(i,j)+adutrans(i,j)*xa(i,j)*rhofacc(k)
adutrans(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+advfld(i,j)
advfld(i,j) = 0.d0
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+adufld(i,j)
adufld(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adgvdiss(i,j) = 0.d0
adgudiss(i,j) = 0.d0
end do
end do
end
subroutine mdmom_fluxform( bi, bj, imin, imax, jmin, jmax, k, kup,
$ kdown, kapparu, kapparv, fveru, fverv, gudiss, gvdiss, mytime,
$myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
double precision fveru(1-olx:snx+olx,1-oly:sny+oly,2)
double precision fverv(1-olx:snx+olx,1-oly:sny+oly,2)
double precision gudiss(1-olx:snx+olx,1-oly:sny+oly)
double precision gvdiss(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
integer kdown
integer kup
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
double precision ahdudxfac
double precision ahdudyfac
double precision ahdvdxfac
double precision ahdvdyfac
double precision ardudrfac
double precision ardvdrfac
logical biharmonic
logical bottomdragterms
double precision cf(1-olx:snx+olx,1-oly:sny+oly)
double precision fmer(1-olx:snx+olx,1-oly:sny+oly)
double precision fufac
double precision fvfac
double precision fvrdw(1-olx:snx+olx,1-oly:sny+oly)
double precision fvrup(1-olx:snx+olx,1-oly:sny+oly)
double precision fzon(1-olx:snx+olx,1-oly:sny+oly)
logical harmonic
double precision hdiv(1-olx:snx+olx,1-oly:sny+oly)
integer help_h
integer help_i
integer help_j
integer help_k
integer help_l
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer j
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
double precision mt(1-olx:snx+olx,1-oly:sny+oly)
double precision mtfacu
double precision mtfacv
double precision mtnhfacu
double precision mtnhfacv
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision rtransu(1-olx:snx+olx,1-oly:sny+oly)
double precision rtransv(1-olx:snx+olx,1-oly:sny+oly)
double precision rveldudrfac
double precision rveldvdrfac
double precision sidemaskfac
double precision strain(1-olx:snx+olx,1-oly:sny+oly)
double precision tension(1-olx:snx+olx,1-oly:sny+oly)
double precision ududxfac
double precision udvdxfac
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
logical usevariableviscosity
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision v4f(1-olx:snx+olx,1-oly:sny+oly)
double precision vdudyfac
double precision vdvdyfac
double precision vf(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C**********************************************
C executable statements of routine
C**********************************************
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
vf(i,j) = 0.
v4f(i,j) = 0.
cf(i,j) = 0.
mt(i,j) = 0.
fzon(i,j) = 0.
fmer(i,j) = 0.
fvrup(i,j) = 0.
fvrdw(i,j) = 0.
rtransu(i,j) = 0.
rtransv(i,j) = 0.
hdiv(i,j) = 0.
vort3(i,j) = 0.
strain(i,j) = 0.
tension(i,j) = 0.
gudiss(i,j) = 0.
gvdiss(i,j) = 0.
end do
end do
ududxfac = affacmom*1.
ahdudxfac = vffacmom*1.
vdudyfac = affacmom*1.
ahdudyfac = vffacmom*1.
rveldudrfac = affacmom*1.
ardudrfac = vffacmom*1.
mtfacu = mtfacmom*1.
mtnhfacu = 1.
fufac = cffacmom*1.
udvdxfac = affacmom*1.
ahdvdxfac = vffacmom*1.
vdvdyfac = affacmom*1.
ahdvdyfac = vffacmom*1.
rveldvdrfac = affacmom*1.
ardvdrfac = vffacmom*1.
mtfacv = mtfacmom*1.
mtnhfacv = 1.
fvfac = cffacmom*1.
if (implicitviscosity) then
ardudrfac = 0.
ardvdrfac = 0.
endif
if (no_slip_sides) then
sidemaskfac = sidedragfactor
else
sidemaskfac = 0.d0
endif
if (no_slip_bottom .or. bottomdragquadratic .ne. 0. .or.
$bottomdraglinear .ne. 0.) then
bottomdragterms = .true.
else
bottomdragterms = .false.
endif
call mom_calc_hfacz( bi,bj,k,hfacz,r_hfacz,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
xa(i,j) = dyg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacw(i,j,k,bi,bj)
ya(i,j) = dxg(i,j,bi,bj)*deepfacc(k)*drf(k)*hfacs(i,j,k,bi,bj)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
ufld(i,j) = uvel(i,j,k,bi,bj)
vfld(i,j) = vvel(i,j,k,bi,bj)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
utrans(i,j) = ufld(i,j)*xa(i,j)*rhofacc(k)
vtrans(i,j) = vfld(i,j)*ya(i,j)*rhofacc(k)
end do
end do
call mom_calc_ke( bi,bj,k,2,ufld,vfld,ke,mythid )
if (momviscosity) then
call mom_calc_hdiv( bi,bj,k,2,ufld,vfld,hdiv,mythid )
call mom_calc_relvort3( bi,bj,k,ufld,vfld,hfacz,vort3,mythid )
call mom_calc_tension( bi,bj,k,ufld,vfld,tension,mythid )
call mom_calc_strain( bi,bj,k,ufld,vfld,hfacz,strain,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
vort3(i,j) = sidemaskfac*vort3(i,j)
strain(i,j) = sidemaskfac*strain(i,j)
endif
end do
end do
endif
if (momadvection .and. k .eq. 1) then
call mom_calc_rtrans( k,bi,bj,rtransu,rtransv,mytime,myiter,
$mythid )
call mom_u_adv_wu( bi,bj,k,uvel,wvel,rtransu,fveru(1-olx,1-oly,
$kup),mythid )
call mom_v_adv_wv( bi,bj,k,vvel,wvel,rtransv,fverv(1-olx,1-oly,
$kup),mythid )
endif
if (momadvection) then
help_h = k+1
call mom_calc_rtrans( help_h,bi,bj,rtransu,rtransv,mytime,
$myiter,mythid )
endif
if (momviscosity) then
call mdmom_calc_visc( bi,bj,k,viscah_z,viscah_d,visca4_z,
$visca4_d,harmonic,biharmonic,usevariableviscosity,hdiv,vort3,
$tension,strain,ke,hfacz,mythid )
endif
if (momadvection) then
call mom_u_adv_uu( bi,bj,k,utrans,ufld,fzon,mythid )
call mom_u_adv_vu( bi,bj,k,vtrans,ufld,fmer,mythid )
help_i = k+1
call mom_u_adv_wu( bi,bj,help_i,uvel,wvel,rtransu,fveru(1-olx,1-
$oly,kdown),mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = -(recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*
$recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*recip_rhofacc(k)*((fzon(i,
$j)-fzon(i-1,j))*ududxfac+(fmer(i,j+1)-fmer(i,j))*vdudyfac+(fveru(
$i,j,kdown)-fveru(i,j,kup))*rksign*rveldudrfac))
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
gu(i,j,k,bi,bj) = 0.d0
end do
end do
endif
if (momviscosity) then
if (biharmonic) then
call mom_u_del2u( bi,bj,k,ufld,hfacz,v4f,mythid )
endif
call mom_u_xviscflux( bi,bj,k,ufld,v4f,fzon,viscah_d,visca4_d,
$mythid )
call mom_u_yviscflux( bi,bj,k,ufld,v4f,hfacz,fmer,viscah_z,
$visca4_z,mythid )
if ( .not. implicitviscosity) then
call mom_u_rviscflux( bi,bj,k,uvel,kapparu,fvrup,mythid )
help_j = k+1
call mom_u_rviscflux( bi,bj,help_j,uvel,kapparu,fvrdw,mythid )
endif
do j = jmin, jmax
do i = imin, imax
gudiss(i,j) = -(recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*
$recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*((fzon(i,j)-fzon(i-1,j))*
$ahdudxfac+(fmer(i,j+1)-fmer(i,j))*ahdudyfac+(fvrdw(i,j)-fvrup(i,j)
$)*rksign*ardudrfac*recip_rhofacc(k)))
end do
end do
if (no_slip_sides) then
call mom_u_sidedrag( bi,bj,k,ufld,v4f,hfacz,viscah_z,visca4_z,
$harmonic,biharmonic,usevariableviscosity,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gudiss(i,j) = gudiss(i,j)+vf(i,j)
end do
end do
endif
if (bottomdragterms) then
call mom_u_bottomdrag( bi,bj,k,ufld,ke,kapparu,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gudiss(i,j) = gudiss(i,j)+vf(i,j)
end do
end do
endif
endif
if (usenhmterms) then
call mom_u_metric_nh( bi,bj,k,ufld,wvel,mt,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+mtnhfacu*mt(i,j)
end do
end do
endif
if (usingsphericalpolargrid .and. metricterms) then
call mom_u_metric_sphere( bi,bj,k,ufld,vfld,mt,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+mtfacu*mt(i,j)
end do
end do
endif
if (usingcylindricalgrid .and. metricterms) then
call mom_u_metric_cylinder( bi,bj,k,ufld,vfld,mt,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+mtfacu*mt(i,j)
end do
end do
endif
if (momadvection) then
call mom_v_adv_uv( bi,bj,k,utrans,vfld,fzon,mythid )
call mom_v_adv_vv( bi,bj,k,vtrans,vfld,fmer,mythid )
help_k = k+1
call mom_v_adv_wv( bi,bj,help_k,vvel,wvel,rtransv,fverv(1-olx,1-
$oly,kdown),mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = -(recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*
$recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*recip_rhofacc(k)*((fzon(i+
$1,j)-fzon(i,j))*udvdxfac+(fmer(i,j)-fmer(i,j-1))*vdvdyfac+(fverv(
$i,j,kdown)-fverv(i,j,kup))*rksign*rveldvdrfac))
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
gv(i,j,k,bi,bj) = 0.d0
end do
end do
endif
if (momviscosity) then
if (biharmonic) then
call mom_v_del2v( bi,bj,k,vfld,hfacz,v4f,mythid )
endif
call mom_v_xviscflux( bi,bj,k,vfld,v4f,hfacz,fzon,viscah_z,
$visca4_z,mythid )
call mom_v_yviscflux( bi,bj,k,vfld,v4f,fmer,viscah_d,visca4_d,
$mythid )
if ( .not. implicitviscosity) then
call mom_v_rviscflux( bi,bj,k,vvel,kapparv,fvrup,mythid )
help_l = k+1
call mom_v_rviscflux( bi,bj,help_l,vvel,kapparv,fvrdw,mythid )
endif
do j = jmin, jmax
do i = imin, imax
gvdiss(i,j) = -(recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*
$recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*((fzon(i+1,j)-fzon(i,j))*
$ahdvdxfac+(fmer(i,j)-fmer(i,j-1))*ahdvdyfac+(fvrdw(i,j)-fvrup(i,j)
$)*rksign*ardvdrfac*recip_rhofacc(k)))
end do
end do
if (no_slip_sides) then
call mom_v_sidedrag( bi,bj,k,vfld,v4f,hfacz,viscah_z,visca4_z,
$harmonic,biharmonic,usevariableviscosity,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gvdiss(i,j) = gvdiss(i,j)+vf(i,j)
end do
end do
endif
if (bottomdragterms) then
call mom_v_bottomdrag( bi,bj,k,vfld,ke,kapparv,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gvdiss(i,j) = gvdiss(i,j)+vf(i,j)
end do
end do
endif
endif
if (usenhmterms) then
call mom_v_metric_nh( bi,bj,k,vfld,wvel,mt,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+mtnhfacv*mt(i,j)
end do
end do
endif
if (usingsphericalpolargrid .and. metricterms) then
call mom_v_metric_sphere( bi,bj,k,ufld,mt,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+mtfacv*mt(i,j)
end do
end do
endif
if (usingcylindricalgrid .and. metricterms) then
call mom_v_metric_cylinder( bi,bj,k,ufld,vfld,mt,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+mtfacv*mt(i,j)
end do
end do
endif
if ( .not. usecdscheme) then
call mom_u_coriolis( bi,bj,k,vfld,cf,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+fufac*cf(i,j)
end do
end do
call mom_v_coriolis( bi,bj,k,ufld,cf,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+fvfac*cf(i,j)
end do
end do
endif
if (use3dcoriolis) then
call mom_u_coriolis_nh( bi,bj,k,wvel,cf,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+fufac*cf(i,j)
end do
end do
if (usingcurvilineargrid) then
call mom_v_coriolis_nh( bi,bj,k,wvel,cf,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+fvfac*cf(i,j)
end do
end do
endif
endif
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)*maskw(i,j,k,bi,bj)
gudiss(i,j) = gudiss(i,j)*maskw(i,j,k,bi,bj)
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)*masks(i,j,k,bi,bj)
gvdiss(i,j) = gvdiss(i,j)*masks(i,j,k,bi,bj)
end do
end do
end
subroutine admom_hdissip( bi, bj, tension, adtension, strain,
$adstrain, viscah_s, adviscah_s, viscah_t, adviscah_t, harmonic,
$adudissip, advdissip )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adstrain(1-olx:snx+olx,1-oly:sny+oly)
double precision adtension(1-olx:snx+olx,1-oly:sny+oly)
double precision adudissip(1-olx:snx+olx,1-oly:sny+oly)
double precision advdissip(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_s(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_t(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
logical harmonic
double precision strain(1-olx:snx+olx,1-oly:sny+oly)
double precision tension(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_s(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_t(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (harmonic) then
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
adstrain(i+1,j) = adstrain(i+1,j)+advdissip(i,j)*recip_dyc(
$i,j,bi,bj)*recip_dyc(i,j,bi,bj)*recip_dxg(i,j,bi,bj)*dyu(i+1,j,bi,
$bj)*dyu(i+1,j,bi,bj)*viscah_s(i+1,j)
adstrain(i,j) = adstrain(i,j)-advdissip(i,j)*recip_dyc(i,j,
$bi,bj)*recip_dyc(i,j,bi,bj)*recip_dxg(i,j,bi,bj)*dyu(i,j,bi,bj)*
$dyu(i,j,bi,bj)*viscah_s(i,j)
adtension(i,j-1) = adtension(i,j-1)+advdissip(i,j)*
$recip_dxg(i,j,bi,bj)*recip_dxg(i,j,bi,bj)*recip_dyc(i,j,bi,bj)*
$dxf(i,j-1,bi,bj)*dxf(i,j-1,bi,bj)*viscah_t(i,j-1)
adtension(i,j) = adtension(i,j)-advdissip(i,j)*recip_dxg(i,
$j,bi,bj)*recip_dxg(i,j,bi,bj)*recip_dyc(i,j,bi,bj)*dxf(i,j,bi,bj)*
$dxf(i,j,bi,bj)*viscah_t(i,j)
adviscah_s(i+1,j) = adviscah_s(i+1,j)+advdissip(i,j)*
$recip_dyc(i,j,bi,bj)*recip_dyc(i,j,bi,bj)*recip_dxg(i,j,bi,bj)*
$dyu(i+1,j,bi,bj)*dyu(i+1,j,bi,bj)*strain(i+1,j)
adviscah_s(i,j) = adviscah_s(i,j)-advdissip(i,j)*recip_dyc(
$i,j,bi,bj)*recip_dyc(i,j,bi,bj)*recip_dxg(i,j,bi,bj)*dyu(i,j,bi,
$bj)*dyu(i,j,bi,bj)*strain(i,j)
adviscah_t(i,j-1) = adviscah_t(i,j-1)+advdissip(i,j)*
$recip_dxg(i,j,bi,bj)*recip_dxg(i,j,bi,bj)*recip_dyc(i,j,bi,bj)*
$dxf(i,j-1,bi,bj)*dxf(i,j-1,bi,bj)*tension(i,j-1)
adviscah_t(i,j) = adviscah_t(i,j)-advdissip(i,j)*recip_dxg(
$i,j,bi,bj)*recip_dxg(i,j,bi,bj)*recip_dyc(i,j,bi,bj)*dxf(i,j,bi,
$bj)*dxf(i,j,bi,bj)*tension(i,j)
advdissip(i,j) = 0.d0
adstrain(i,j+1) = adstrain(i,j+1)+adudissip(i,j)*recip_dxc(
$i,j,bi,bj)*recip_dxc(i,j,bi,bj)*recip_dyg(i,j,bi,bj)*dxv(i,j+1,bi,
$bj)*dxv(i,j+1,bi,bj)*viscah_s(i,j+1)
adstrain(i,j) = adstrain(i,j)-adudissip(i,j)*recip_dxc(i,j,
$bi,bj)*recip_dxc(i,j,bi,bj)*recip_dyg(i,j,bi,bj)*dxv(i,j,bi,bj)*
$dxv(i,j,bi,bj)*viscah_s(i,j)
adtension(i-1,j) = adtension(i-1,j)-adudissip(i,j)*
$recip_dyg(i,j,bi,bj)*recip_dyg(i,j,bi,bj)*recip_dxc(i,j,bi,bj)*
$dyf(i-1,j,bi,bj)*dyf(i-1,j,bi,bj)*viscah_t(i-1,j)
adtension(i,j) = adtension(i,j)+adudissip(i,j)*recip_dyg(i,
$j,bi,bj)*recip_dyg(i,j,bi,bj)*recip_dxc(i,j,bi,bj)*dyf(i,j,bi,bj)*
$dyf(i,j,bi,bj)*viscah_t(i,j)
adviscah_s(i,j+1) = adviscah_s(i,j+1)+adudissip(i,j)*
$recip_dxc(i,j,bi,bj)*recip_dxc(i,j,bi,bj)*recip_dyg(i,j,bi,bj)*
$dxv(i,j+1,bi,bj)*dxv(i,j+1,bi,bj)*strain(i,j+1)
adviscah_s(i,j) = adviscah_s(i,j)-adudissip(i,j)*recip_dxc(
$i,j,bi,bj)*recip_dxc(i,j,bi,bj)*recip_dyg(i,j,bi,bj)*dxv(i,j,bi,
$bj)*dxv(i,j,bi,bj)*strain(i,j)
adviscah_t(i-1,j) = adviscah_t(i-1,j)-adudissip(i,j)*
$recip_dyg(i,j,bi,bj)*recip_dyg(i,j,bi,bj)*recip_dxc(i,j,bi,bj)*
$dyf(i-1,j,bi,bj)*dyf(i-1,j,bi,bj)*tension(i-1,j)
adviscah_t(i,j) = adviscah_t(i,j)+adudissip(i,j)*recip_dyg(
$i,j,bi,bj)*recip_dyg(i,j,bi,bj)*recip_dxc(i,j,bi,bj)*dyf(i,j,bi,
$bj)*dyf(i,j,bi,bj)*tension(i,j)
adudissip(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_quasihydrostatic( bi, bj, k, ufld, adufld, vfld,
$advfld, adeffectivebuoy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer snx
parameter ( snx = 45 )
integer imax
parameter ( imax = snx+1 )
integer imin
parameter ( imin = 0 )
integer sny
parameter ( sny = 20 )
integer jmax
parameter ( jmax = sny+1 )
integer jmin
parameter ( jmin = 0 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer nx
parameter ( nx = snx*nsx*npx )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adeffectivebuoy(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer i
integer j
double precision scalingfactor
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
scalingfactor = rhoconst*gravitysign*recip_gravity
if (usenhmterms) then
do j = jmin, jmax
do i = imin, imax
adufld(i+1,j,k,bi,bj) = adufld(i+1,j,k,bi,bj)+
$adeffectivebuoy(i,j)*scalingfactor*ufld(i+1,j,k,bi,bj)*
$recip_rsphere*recip_deepfacc(k)
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+adeffectivebuoy(i,
$j)*scalingfactor*ufld(i,j,k,bi,bj)*recip_rsphere*recip_deepfacc(k)
advfld(i,j+1,k,bi,bj) = advfld(i,j+1,k,bi,bj)+
$adeffectivebuoy(i,j)*scalingfactor*vfld(i,j+1,k,bi,bj)*
$recip_rsphere*recip_deepfacc(k)
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)+adeffectivebuoy(i,
$j)*scalingfactor*vfld(i,j,k,bi,bj)*recip_rsphere*recip_deepfacc(k)
end do
end do
endif
if (use3dcoriolis) then
do j = jmin, jmax
do i = imin, imax
adufld(i+1,j,k,bi,bj) = adufld(i+1,j,k,bi,bj)+0.5d0*
$adeffectivebuoy(i,j)*scalingfactor*fcoricos(i,j,bi,bj)*anglecosc(
$i,j,bi,bj)
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+0.5d0*
$adeffectivebuoy(i,j)*scalingfactor*fcoricos(i,j,bi,bj)*anglecosc(
$i,j,bi,bj)
advfld(i,j+1,k,bi,bj) = advfld(i,j+1,k,bi,bj)-0.5d0*
$adeffectivebuoy(i,j)*scalingfactor*fcoricos(i,j,bi,bj)*anglesinc(
$i,j,bi,bj)
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)-0.5d0*
$adeffectivebuoy(i,j)*scalingfactor*fcoricos(i,j,bi,bj)*anglesinc(
$i,j,bi,bj)
end do
end do
endif
end
subroutine admom_u_adv_uu( utrans, adutrans, ufld, adufld,
$adadvectfluxuu )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adadvectfluxuu(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+0.25*adadvectfluxuu(i,j)*(
$utrans(i,j)+utrans(i+1,j))
adufld(i,j) = adufld(i,j)+0.25*adadvectfluxuu(i,j)*(utrans(i,
$j)+utrans(i+1,j))
adutrans(i+1,j) = adutrans(i+1,j)+0.25*adadvectfluxuu(i,j)*(
$ufld(i,j)+ufld(i+1,j))
adutrans(i,j) = adutrans(i,j)+0.25*adadvectfluxuu(i,j)*(ufld(
$i,j)+ufld(i+1,j))
adadvectfluxuu(i,j) = 0.d0
end do
end do
end
subroutine admom_u_adv_vu( vtrans, advtrans, ufld, adufld,
$adadvectfluxvu )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adadvectfluxvu(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adufld(i,j-1) = adufld(i,j-1)+0.25*adadvectfluxvu(i,j)*(
$vtrans(i,j)+vtrans(i-1,j))
adufld(i,j) = adufld(i,j)+0.25*adadvectfluxvu(i,j)*(vtrans(i,
$j)+vtrans(i-1,j))
advtrans(i-1,j) = advtrans(i-1,j)+0.25*adadvectfluxvu(i,j)*(
$ufld(i,j)+ufld(i,j-1))
advtrans(i,j) = advtrans(i,j)+0.25*adadvectfluxvu(i,j)*(ufld(
$i,j)+ufld(i,j-1))
adadvectfluxvu(i,j) = 0.d0
end do
end do
end
subroutine admom_u_adv_wu( bi, bj, k, ufld, adufld, wfld, adwfld,
$rtrans, adrtrans, adadvectivefluxwu )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adadvectivefluxwu(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (k .eq. nr+1 .and. userealfreshwaterflux .and. usingpcoords)
$then
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adrtrans(i,j) = adrtrans(i,j)+adadvectivefluxwu(i,j)*ufld(i,
$j,k-1,bi,bj)
adufld(i,j,k-1,bi,bj) = adufld(i,j,k-1,bi,bj)+
$adadvectivefluxwu(i,j)*rtrans(i,j)
adadvectivefluxwu(i,j) = 0.d0
end do
end do
else if (k .gt. nr .or. k .eq. 1 .and. rigidlid) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adadvectivefluxwu(i,j) = 0.d0
end do
end do
else if (k .eq. 1) then
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adrtrans(i,j) = adrtrans(i,j)+adadvectivefluxwu(i,j)*ufld(i,
$j,k,bi,bj)
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+adadvectivefluxwu(
$i,j)*rtrans(i,j)
adadvectivefluxwu(i,j) = 0.d0
end do
end do
else
if (select_rstar .eq. 0 .and. ( .not. rigidlid)) then
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+0.25*
$adadvectivefluxwu(i,j)*(wfld(i,j,k,bi,bj)*ra(i,j,bi,bj)*(maskc(i,
$j,k,bi,bj)-maskc(i,j,k-1,bi,bj))+wfld(i-1,j,k,bi,bj)*ra(i-1,j,bi,
$bj)*(maskc(i-1,j,k,bi,bj)-maskc(i-1,j,k-1,bi,bj)))*deepfac2f(k)*
$rhofacf(k)
adwfld(i-1,j,k,bi,bj) = adwfld(i-1,j,k,bi,bj)+0.25*
$adadvectivefluxwu(i,j)*ra(i-1,j,bi,bj)*(maskc(i-1,j,k,bi,bj)-
$maskc(i-1,j,k-1,bi,bj))*deepfac2f(k)*rhofacf(k)*ufld(i,j,k,bi,bj)
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.25*
$adadvectivefluxwu(i,j)*ra(i,j,bi,bj)*(maskc(i,j,k,bi,bj)-maskc(i,
$j,k-1,bi,bj))*deepfac2f(k)*rhofacf(k)*ufld(i,j,k,bi,bj)
end do
end do
endif
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adrtrans(i,j) = adrtrans(i,j)+0.5d0*adadvectivefluxwu(i,j)*(
$ufld(i,j,k,bi,bj)+ufld(i,j,k-1,bi,bj))
adufld(i,j,k-1,bi,bj) = adufld(i,j,k-1,bi,bj)+0.5d0*
$adadvectivefluxwu(i,j)*rtrans(i,j)
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+0.5d0*
$adadvectivefluxwu(i,j)*rtrans(i,j)
adadvectivefluxwu(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_u_bottomdrag( bi, bj, k, ufld, adufld, ke, adke,
$kapparu, adudragterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
double precision adudragterms(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adudragtermsh
double precision dragfac
integer i
integer j
integer kbottom
integer kdown
integer kdownc
double precision maskdown
double precision rdrckp1
double precision udragtermsh
double precision viscfac
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usingzcoords) then
kbottom = nr
kdown = min(k+1,kbottom)
kdownc = kdown
dragfac = 1.d0
else
kbottom = 1
kdown = max(k-1,kbottom)
kdownc = k
dragfac = mass2runit*rhoconst
endif
rdrckp1 = recip_drc(kdownc)
if (k .eq. kbottom) then
rdrckp1 = recip_drf(k)
endif
viscfac = 0.
if (no_slip_bottom) then
viscfac = 1.
endif
do j = 1-oly, sny+oly-1
do i = 1-olx+1, snx+olx-1
maskdown = maskw(i,j,kdown,bi,bj)
if (k .eq. kbottom) then
maskdown = 0.
endif
if (ke(i,j)+ke(i-1,j) .ne. 0.) then
udragtermsh = ke(i,j)+ke(i-1,j)
adudragtermsh = -(adudragterms(i,j)*recip_hfacw(i,j,k,bi,bj)
$*recip_drf(k)*bottomdragquadratic*1./(2.*sqrt(udragtermsh))*
$dragfac*(1.-maskdown)*ufld(i,j))
adufld(i,j) = adufld(i,j)-adudragterms(i,j)*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)*bottomdragquadratic*dragfac*(1.-maskdown)*
$sqrt(udragtermsh)
adke(i-1,j) = adke(i-1,j)+adudragtermsh
adke(i,j) = adke(i,j)+adudragtermsh
endif
adufld(i,j) = adufld(i,j)-adudragterms(i,j)*recip_hfacw(i,j,k,
$bi,bj)*recip_drf(k)*(2.*kapparu(i,j,kdownc)*rdrckp1*viscfac+
$bottomdraglinear*dragfac)*(1.-maskdown)
adudragterms(i,j) = 0.d0
end do
end do
end
subroutine admom_u_coriolis( bi, bj, k, advfld, aducoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision one
parameter ( one = 1.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision aducoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usejamartwetpoints) then
do j = 1-oly, sny+oly-1
do i = 1-olx+1, snx+olx
aducoriolisterm(i,j) = aducoriolisterm(i,j)*(4/max(one,
$masks(i,j,k,bi,bj)+masks(i,j+1,k,bi,bj)+masks(i-1,j,k,bi,bj)+
$masks(i-1,j+1,k,bi,bj)))
end do
end do
endif
if (useenergyconservingcoriolis) then
do j = 1-oly, sny+oly-1
do i = 1-olx+1, snx+olx
advfld(i-1,j+1) = advfld(i-1,j+1)+0.25*aducoriolisterm(i,j)*
$fcori(i-1,j,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.25*aducoriolisterm(i,j)*
$fcori(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)+0.25*aducoriolisterm(i,j)*
$fcori(i-1,j,bi,bj)
advfld(i,j) = advfld(i,j)+0.25*aducoriolisterm(i,j)*fcori(i,
$j,bi,bj)
aducoriolisterm(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly-1
do i = 1-olx+1, snx+olx
advfld(i-1,j+1) = advfld(i-1,j+1)+0.125*aducoriolisterm(i,j)
$*(fcori(i,j,bi,bj)+fcori(i-1,j,bi,bj))
advfld(i,j+1) = advfld(i,j+1)+0.125*aducoriolisterm(i,j)*(
$fcori(i,j,bi,bj)+fcori(i-1,j,bi,bj))
advfld(i-1,j) = advfld(i-1,j)+0.125*aducoriolisterm(i,j)*(
$fcori(i,j,bi,bj)+fcori(i-1,j,bi,bj))
advfld(i,j) = advfld(i,j)+0.125*aducoriolisterm(i,j)*(fcori(
$i,j,bi,bj)+fcori(i-1,j,bi,bj))
aducoriolisterm(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_u_coriolis_nh( bi, bj, k, adwfld,
$aducoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision aducoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer kp1
double precision wmsk
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
kp1 = min(k+1,nr)
wmsk = 1.
if (k .eq. nr) then
wmsk = 0.
endif
do j = 1-oly, sny+oly
do i = 2-olx, snx+olx
adwfld(i-1,j,k,bi,bj) = adwfld(i-1,j,k,bi,bj)+0.25*
$aducoriolisterm(i,j)*fcoricos(i-1,j,bi,bj)*anglecosc(i-1,j,bi,bj)*
$rvel2wunit(k)*gravitysign
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.25*
$aducoriolisterm(i,j)*fcoricos(i,j,bi,bj)*anglecosc(i,j,bi,bj)*
$rvel2wunit(k)*gravitysign
adwfld(i-1,j,kp1,bi,bj) = adwfld(i-1,j,kp1,bi,bj)+0.25*
$aducoriolisterm(i,j)*fcoricos(i-1,j,bi,bj)*anglecosc(i-1,j,bi,bj)*
$rvel2wunit(kp1)*wmsk*gravitysign
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)+0.25*
$aducoriolisterm(i,j)*fcoricos(i,j,bi,bj)*anglecosc(i,j,bi,bj)*
$rvel2wunit(kp1)*wmsk*gravitysign
aducoriolisterm(i,j) = 0.d0
end do
end do
end
subroutine admom_u_del2u( bi, bj, k, adufld, hfacz, addel2u )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision addel2u(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
C==============================================
C declare local variables
C==============================================
double precision adfmer(1-olx:snx+olx,1-oly:sny+oly)
double precision adfzon(1-olx:snx+olx,1-oly:sny+oly)
double precision hfaczclosedn
double precision hfaczcloseds
integer i
integer ip1
integer ip2
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfmer(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfzon(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (no_slip_sides) then
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
hfaczcloseds = hfacw(i,j,k,bi,bj)-hfacz(i,j)
hfaczclosedn = hfacw(i,j,k,bi,bj)-hfacz(i,j+1)
adufld(i,j) = adufld(i,j)-2*addel2u(i,j)*recip_hfacw(i,j,k,
$bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*(
$hfaczcloseds*dxv(i,j,bi,bj)*recip_dyu(i,j,bi,bj)+hfaczclosedn*dxv(
$i,j+1,bi,bj)*recip_dyu(i,j+1,bi,bj))*drf(k)*maskw(i,j,k,bi,bj)
end do
end do
endif
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adfmer(i,j+1) = adfmer(i,j+1)+addel2u(i,j)*recip_drf(k)*
$recip_hfacw(i,j,k,bi,bj)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$maskw(i,j,k,bi,bj)
adfmer(i,j) = adfmer(i,j)-addel2u(i,j)*recip_drf(k)*
$recip_hfacw(i,j,k,bi,bj)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$maskw(i,j,k,bi,bj)
adfzon(i-1,j) = adfzon(i-1,j)-addel2u(i,j)*recip_drf(k)*
$recip_hfacw(i,j,k,bi,bj)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$maskw(i,j,k,bi,bj)
adfzon(i,j) = adfzon(i,j)+addel2u(i,j)*recip_drf(k)*
$recip_hfacw(i,j,k,bi,bj)*recip_raw(i,j,bi,bj)*recip_deepfac2c(k)*
$maskw(i,j,k,bi,bj)
addel2u(i,j) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx-1
adufld(i,j-1) = adufld(i,j-1)-adfmer(i,j)*drf(k)*hfacz(i,j)*
$dxv(i,j,bi,bj)*recip_dyu(i,j,bi,bj)
adufld(i,j) = adufld(i,j)+adfmer(i,j)*drf(k)*hfacz(i,j)*dxv(i,
$j,bi,bj)*recip_dyu(i,j,bi,bj)
adfmer(i,j) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i+1,j) = adufld(i+1,j)+adfzon(i,j)*drf(k)*hfacc(i,j,k,
$bi,bj)*dyf(i,j,bi,bj)*recip_dxf(i,j,bi,bj)
adufld(i,j) = adufld(i,j)-adfzon(i,j)*drf(k)*hfacc(i,j,k,bi,
$bj)*dyf(i,j,bi,bj)*recip_dxf(i,j,bi,bj)
adfzon(i,j) = 0.d0
end do
end do
end
subroutine admom_u_metric_cylinder( bi, bj, ufld, adufld, vfld,
$advfld, adumetricterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adumetricterms(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
double precision radius
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly-1
do i = 1-olx+1, snx+olx
radius = (yg(i,j,bi,bj)+yg(i,j+1,bi,bj))*0.5d0
if (radius .gt. 0.) then
adufld(i,j) = adufld(i,j)+adumetricterms(i,j)*(0.25*(vfld(i,
$j)+vfld(i-1,j)+vfld(i,j+1)+vfld(i-1,j+1))/radius)
advfld(i-1,j+1) = advfld(i-1,j+1)+adumetricterms(i,j)*(0.25*
$ufld(i,j)/radius)
advfld(i,j+1) = advfld(i,j+1)+adumetricterms(i,j)*(0.25*
$ufld(i,j)/radius)
advfld(i-1,j) = advfld(i-1,j)+adumetricterms(i,j)*(0.25*
$ufld(i,j)/radius)
advfld(i,j) = advfld(i,j)+adumetricterms(i,j)*(0.25*ufld(i,
$j)/radius)
adumetricterms(i,j) = 0.d0
else
adumetricterms(i,j) = 0.d0
endif
end do
end do
end
subroutine admom_u_metric_nh( bi, bj, k, ufld, adufld, wfld,
$adwfld, adumetricterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adumetricterms(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer kp1
double precision wvelbottomoverride
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
kp1 = min(k+1,nr)
wvelbottomoverride = 1.
if (k .eq. nr) then
wvelbottomoverride = 0.
endif
do j = 1-olx, sny+oly
do i = 1-olx+1, snx+olx
adufld(i,j) = adufld(i,j)+0.25*adumetricterms(i,j)*
$recip_rsphere*recip_deepfacc(k)*((wfld(i-1,j,kp1,bi,bj)+wfld(i,j,
$kp1,bi,bj))*rvel2wunit(kp1)*wvelbottomoverride+(wfld(i-1,j,k,bi,
$bj)+wfld(i,j,k,bi,bj))*rvel2wunit(k))*gravitysign
adwfld(i-1,j,k,bi,bj) = adwfld(i-1,j,k,bi,bj)+0.25*
$adumetricterms(i,j)*ufld(i,j)*recip_rsphere*recip_deepfacc(k)*
$rvel2wunit(k)*gravitysign
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.25*adumetricterms(
$i,j)*ufld(i,j)*recip_rsphere*recip_deepfacc(k)*rvel2wunit(k)*
$gravitysign
adwfld(i-1,j,kp1,bi,bj) = adwfld(i-1,j,kp1,bi,bj)+0.25*
$adumetricterms(i,j)*ufld(i,j)*recip_rsphere*recip_deepfacc(k)*
$rvel2wunit(kp1)*wvelbottomoverride*gravitysign
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)+0.25*
$adumetricterms(i,j)*ufld(i,j)*recip_rsphere*recip_deepfacc(k)*
$rvel2wunit(kp1)*wvelbottomoverride*gravitysign
adumetricterms(i,j) = 0.d0
end do
end do
end
subroutine admom_u_metric_sphere( bi, bj, k, ufld, adufld, vfld,
$advfld, adumetricterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adumetricterms(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-olx, sny+oly-1
do i = 1-olx+1, snx+olx
adufld(i,j) = adufld(i,j)+0.25*adumetricterms(i,j)*
$recip_rsphere*recip_deepfacc(k)*(vfld(i,j)+vfld(i-1,j)+vfld(i,j+1)
$+vfld(i-1,j+1))*tanphiatu(i,j,bi,bj)
advfld(i-1,j+1) = advfld(i-1,j+1)+0.25*adumetricterms(i,j)*
$ufld(i,j)*recip_rsphere*recip_deepfacc(k)*tanphiatu(i,j,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.25*adumetricterms(i,j)*ufld(i,
$j)*recip_rsphere*recip_deepfacc(k)*tanphiatu(i,j,bi,bj)
advfld(i-1,j) = advfld(i-1,j)+0.25*adumetricterms(i,j)*ufld(i,
$j)*recip_rsphere*recip_deepfacc(k)*tanphiatu(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+0.25*adumetricterms(i,j)*ufld(i,j)*
$recip_rsphere*recip_deepfacc(k)*tanphiatu(i,j,bi,bj)
adumetricterms(i,j) = 0.d0
end do
end do
end
subroutine admom_u_rviscflux( bi, bj, k, adufld, kapparu,
$adrviscfluxu )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adrviscfluxu(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (k .le. 1 .or. k .gt. nr) then
else
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
adufld(i,j,k-1,bi,bj) = adufld(i,j,k-1,bi,bj)+adrviscfluxu(
$i,j)*kapparu(i,j,k)*raw(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)*rksign*
$recip_drc(k)*maskw(i,j,k,bi,bj)*maskw(i,j,k-1,bi,bj)
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)-adrviscfluxu(i,j)*
$kapparu(i,j,k)*raw(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)*rksign*
$recip_drc(k)*maskw(i,j,k,bi,bj)*maskw(i,j,k-1,bi,bj)
adrviscfluxu(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_u_sidedrag( bi, bj, k, ufld, adufld, del2u,
$addel2u, hfacz, viscah_z, adviscah_z, visca4_z, advisca4_z,
$adudragterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision addel2u(1-olx:snx+olx,1-oly:sny+oly)
double precision adudragterms(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision del2u(1-olx:snx+olx,1-oly:sny+oly)
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision a4tmp
double precision ahtmp
double precision hfaczclosedn
double precision hfaczcloseds
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (sidedragfactor .le. 0.) then
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
hfaczcloseds = hfacw(i,j,k,bi,bj)-hfacz(i,j)
hfaczclosedn = hfacw(i,j,k,bi,bj)-hfacz(i,j+1)
ahtmp = min(viscah+viscahgrid*raw(i,j,bi,bj)/deltatmom,
$viscahmax)
a4tmp = min(visca4+visca4grid*raw(i,j,bi,bj)**2/deltatmom,
$visca4max)
a4tmp = min(a4tmp,visca4gridmax*raw(i,j,bi,bj)**2/deltatmom)
a4tmp = max(a4tmp,visca4gridmin*raw(i,j,bi,bj)**2/deltatmom)
addel2u(i,j) = addel2u(i,j)+2.*adudragterms(i,j)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*(
$hfaczcloseds*dxv(i,j,bi,bj)*recip_dyu(i,j,bi,bj)+hfaczclosedn*dxv(
$i,j+1,bi,bj)*recip_dyu(i,j+1,bi,bj))*drf(k)*a4tmp
adufld(i,j) = adufld(i,j)-2.*adudragterms(i,j)*recip_hfacw(
$i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*(hfaczcloseds*dxv(
$i,j,bi,bj)*recip_dyu(i,j,bi,bj)+hfaczclosedn*dxv(i,j+1,bi,bj)*
$recip_dyu(i,j+1,bi,bj))*drf(k)*ahtmp
adudragterms(i,j) = 0.d0
end do
end do
else
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
hfaczcloseds = hfacw(i,j,k,bi,bj)-hfacw(i,j-1,k,bi,bj)
hfaczclosedn = hfacw(i,j,k,bi,bj)-hfacw(i,j+1,k,bi,bj)
hfaczcloseds = max(0.d0,hfaczcloseds)
hfaczclosedn = max(0.d0,hfaczclosedn)
addel2u(i,j) = addel2u(i,j)-adudragterms(i,j)*recip_hfacw(i,
$j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*((-(hfaczcloseds*dxv(
$i,j,bi,bj)*recip_dyu(i,j,bi,bj)*visca4_z(i,j)))-hfaczclosedn*dxv(
$i,j+1,bi,bj)*recip_dyu(i,j+1,bi,bj)*visca4_z(i,j+1))*drf(k)*
$sidedragfactor
adufld(i,j) = adufld(i,j)-adudragterms(i,j)*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*(hfaczcloseds*dxv(i,j,
$bi,bj)*recip_dyu(i,j,bi,bj)*viscah_z(i,j)+hfaczclosedn*dxv(i,j+1,
$bi,bj)*recip_dyu(i,j+1,bi,bj)*viscah_z(i,j+1))*drf(k)*
$sidedragfactor
advisca4_z(i,j+1) = advisca4_z(i,j+1)+adudragterms(i,j)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*
$hfaczclosedn*dxv(i,j+1,bi,bj)*recip_dyu(i,j+1,bi,bj)*del2u(i,j)*
$drf(k)*sidedragfactor
advisca4_z(i,j) = advisca4_z(i,j)+adudragterms(i,j)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*
$hfaczcloseds*dxv(i,j,bi,bj)*recip_dyu(i,j,bi,bj)*del2u(i,j)*drf(k)
$*sidedragfactor
adviscah_z(i,j+1) = adviscah_z(i,j+1)-adudragterms(i,j)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*
$hfaczclosedn*dxv(i,j+1,bi,bj)*recip_dyu(i,j+1,bi,bj)*ufld(i,j)*
$drf(k)*sidedragfactor
adviscah_z(i,j) = adviscah_z(i,j)-adudragterms(i,j)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*
$hfaczcloseds*dxv(i,j,bi,bj)*recip_dyu(i,j,bi,bj)*ufld(i,j)*drf(k)*
$sidedragfactor
adudragterms(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_u_xviscflux( bi, bj, k, ufld, adufld, del2u,
$addel2u, adxviscfluxu, viscah_d, adviscah_d, visca4_d, advisca4_d
$)
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2u(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adxviscfluxu(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision del2u(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
addel2u(i+1,j) = addel2u(i+1,j)+adxviscfluxu(i,j)*dyf(i,j,bi,
$bj)*drf(k)*hfacc(i,j,k,bi,bj)*visca4_d(i,j)*cosfacu(j,bi,bj)*
$recip_dxf(i,j,bi,bj)
addel2u(i,j) = addel2u(i,j)-adxviscfluxu(i,j)*dyf(i,j,bi,bj)*
$drf(k)*hfacc(i,j,k,bi,bj)*visca4_d(i,j)*cosfacu(j,bi,bj)*
$recip_dxf(i,j,bi,bj)
adufld(i+1,j) = adufld(i+1,j)-adxviscfluxu(i,j)*dyf(i,j,bi,bj)
$*drf(k)*hfacc(i,j,k,bi,bj)*viscah_d(i,j)*cosfacu(j,bi,bj)*
$recip_dxf(i,j,bi,bj)
adufld(i,j) = adufld(i,j)+adxviscfluxu(i,j)*dyf(i,j,bi,bj)*
$drf(k)*hfacc(i,j,k,bi,bj)*viscah_d(i,j)*cosfacu(j,bi,bj)*
$recip_dxf(i,j,bi,bj)
advisca4_d(i,j) = advisca4_d(i,j)+adxviscfluxu(i,j)*dyf(i,j,
$bi,bj)*drf(k)*hfacc(i,j,k,bi,bj)*(del2u(i+1,j)-del2u(i,j))*
$cosfacu(j,bi,bj)*recip_dxf(i,j,bi,bj)
adviscah_d(i,j) = adviscah_d(i,j)-adxviscfluxu(i,j)*dyf(i,j,
$bi,bj)*drf(k)*hfacc(i,j,k,bi,bj)*(ufld(i+1,j)-ufld(i,j))*cosfacu(
$j,bi,bj)*recip_dxf(i,j,bi,bj)
adxviscfluxu(i,j) = 0.d0
end do
end do
end
subroutine admom_u_yviscflux( bi, bj, k, ufld, adufld, del2u,
$addel2u, hfacz, adyviscfluxu, viscah_z, adviscah_z, visca4_z,
$advisca4_z )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2u(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adyviscfluxu(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision del2u(1-olx:snx+olx,1-oly:sny+oly)
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx
addel2u(i,j-1) = addel2u(i,j-1)-adyviscfluxu(i,j)*dxv(i,j,bi,
$bj)*drf(k)*hfacz(i,j)*visca4_z(i,j)*recip_dyu(i,j,bi,bj)
addel2u(i,j) = addel2u(i,j)+adyviscfluxu(i,j)*dxv(i,j,bi,bj)*
$drf(k)*hfacz(i,j)*visca4_z(i,j)*recip_dyu(i,j,bi,bj)
adufld(i,j-1) = adufld(i,j-1)+adyviscfluxu(i,j)*dxv(i,j,bi,bj)
$*drf(k)*hfacz(i,j)*viscah_z(i,j)*recip_dyu(i,j,bi,bj)
adufld(i,j) = adufld(i,j)-adyviscfluxu(i,j)*dxv(i,j,bi,bj)*
$drf(k)*hfacz(i,j)*viscah_z(i,j)*recip_dyu(i,j,bi,bj)
advisca4_z(i,j) = advisca4_z(i,j)+adyviscfluxu(i,j)*dxv(i,j,
$bi,bj)*drf(k)*hfacz(i,j)*(del2u(i,j)-del2u(i,j-1))*recip_dyu(i,j,
$bi,bj)
adviscah_z(i,j) = adviscah_z(i,j)-adyviscfluxu(i,j)*dxv(i,j,
$bi,bj)*drf(k)*hfacz(i,j)*(ufld(i,j)-ufld(i,j-1))*recip_dyu(i,j,bi,
$bj)
adyviscfluxu(i,j) = 0.d0
end do
end do
end
subroutine admom_v_adv_uv( utrans, adutrans, vfld, advfld,
$adadvectfluxuv )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adadvectfluxuv(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adutrans(i,j-1) = adutrans(i,j-1)+0.25*adadvectfluxuv(i,j)*(
$vfld(i,j)+vfld(i-1,j))
adutrans(i,j) = adutrans(i,j)+0.25*adadvectfluxuv(i,j)*(vfld(
$i,j)+vfld(i-1,j))
advfld(i-1,j) = advfld(i-1,j)+0.25*adadvectfluxuv(i,j)*(
$utrans(i,j)+utrans(i,j-1))
advfld(i,j) = advfld(i,j)+0.25*adadvectfluxuv(i,j)*(utrans(i,
$j)+utrans(i,j-1))
adadvectfluxuv(i,j) = 0.d0
end do
end do
end
subroutine admom_v_adv_vv( vtrans, advtrans, vfld, advfld,
$adadvectfluxvv )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adadvectfluxvv(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
advfld(i,j+1) = advfld(i,j+1)+0.25*adadvectfluxvv(i,j)*(
$vtrans(i,j)+vtrans(i,j+1))
advfld(i,j) = advfld(i,j)+0.25*adadvectfluxvv(i,j)*(vtrans(i,
$j)+vtrans(i,j+1))
advtrans(i,j+1) = advtrans(i,j+1)+0.25*adadvectfluxvv(i,j)*(
$vfld(i,j)+vfld(i,j+1))
advtrans(i,j) = advtrans(i,j)+0.25*adadvectfluxvv(i,j)*(vfld(
$i,j)+vfld(i,j+1))
adadvectfluxvv(i,j) = 0.d0
end do
end do
end
subroutine admom_v_adv_wv( bi, bj, k, vfld, advfld, wfld, adwfld,
$rtrans, adrtrans, adadvectivefluxwv )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adadvectivefluxwv(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (k .eq. nr+1 .and. userealfreshwaterflux .and. usingpcoords)
$then
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adrtrans(i,j) = adrtrans(i,j)+adadvectivefluxwv(i,j)*vfld(i,
$j,k-1,bi,bj)
advfld(i,j,k-1,bi,bj) = advfld(i,j,k-1,bi,bj)+
$adadvectivefluxwv(i,j)*rtrans(i,j)
adadvectivefluxwv(i,j) = 0.d0
end do
end do
else if (k .gt. nr .or. k .eq. 1 .and. rigidlid) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adadvectivefluxwv(i,j) = 0.d0
end do
end do
else if (k .eq. 1) then
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adrtrans(i,j) = adrtrans(i,j)+adadvectivefluxwv(i,j)*vfld(i,
$j,k,bi,bj)
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)+adadvectivefluxwv(
$i,j)*rtrans(i,j)
adadvectivefluxwv(i,j) = 0.d0
end do
end do
else
if (select_rstar .eq. 0 .and. ( .not. rigidlid)) then
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)+0.25*
$adadvectivefluxwv(i,j)*(wfld(i,j,k,bi,bj)*ra(i,j,bi,bj)*(maskc(i,
$j,k,bi,bj)-maskc(i,j,k-1,bi,bj))+wfld(i,j-1,k,bi,bj)*ra(i,j-1,bi,
$bj)*(maskc(i,j-1,k,bi,bj)-maskc(i,j-1,k-1,bi,bj)))*deepfac2f(k)*
$rhofacf(k)
adwfld(i,j-1,k,bi,bj) = adwfld(i,j-1,k,bi,bj)+0.25*
$adadvectivefluxwv(i,j)*ra(i,j-1,bi,bj)*(maskc(i,j-1,k,bi,bj)-
$maskc(i,j-1,k-1,bi,bj))*deepfac2f(k)*rhofacf(k)*vfld(i,j,k,bi,bj)
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.25*
$adadvectivefluxwv(i,j)*ra(i,j,bi,bj)*(maskc(i,j,k,bi,bj)-maskc(i,
$j,k-1,bi,bj))*deepfac2f(k)*rhofacf(k)*vfld(i,j,k,bi,bj)
end do
end do
endif
do j = 1-oly+1, sny+oly
do i = 1-olx+1, snx+olx
adrtrans(i,j) = adrtrans(i,j)+0.5d0*adadvectivefluxwv(i,j)*(
$vfld(i,j,k,bi,bj)+vfld(i,j,k-1,bi,bj))
advfld(i,j,k-1,bi,bj) = advfld(i,j,k-1,bi,bj)+0.5d0*
$adadvectivefluxwv(i,j)*rtrans(i,j)
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)+0.5d0*
$adadvectivefluxwv(i,j)*rtrans(i,j)
adadvectivefluxwv(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_v_bottomdrag( bi, bj, k, vfld, advfld, ke, adke,
$kapparv, advdragterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
double precision advdragterms(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision advdragtermsh
double precision dragfac
integer i
integer j
integer kbottom
integer kdown
integer kdownc
double precision maskdown
double precision rdrckp1
double precision vdragtermsh
double precision viscfac
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usingzcoords) then
kbottom = nr
kdown = min(k+1,kbottom)
kdownc = kdown
dragfac = 1.d0
else
kbottom = 1
kdown = max(k-1,kbottom)
kdownc = k
dragfac = mass2runit*rhoconst
endif
rdrckp1 = recip_drc(kdownc)
viscfac = 0.
if (no_slip_bottom) then
viscfac = 1.
endif
if (k .eq. kbottom) then
rdrckp1 = recip_drf(k)
endif
do j = 1-oly+1, sny+oly-1
do i = 1-olx, snx+olx-1
maskdown = masks(i,j,kdown,bi,bj)
if (k .eq. kbottom) then
maskdown = 0.
endif
if (ke(i,j)+ke(i,j-1) .ne. 0.) then
vdragtermsh = ke(i,j)+ke(i,j-1)
advdragtermsh = -(advdragterms(i,j)*recip_hfacs(i,j,k,bi,bj)
$*recip_drf(k)*bottomdragquadratic*1./(2.*sqrt(vdragtermsh))*
$dragfac*(1.-maskdown)*vfld(i,j))
advfld(i,j) = advfld(i,j)-advdragterms(i,j)*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)*bottomdragquadratic*dragfac*(1.-maskdown)*
$sqrt(vdragtermsh)
adke(i,j-1) = adke(i,j-1)+advdragtermsh
adke(i,j) = adke(i,j)+advdragtermsh
endif
advfld(i,j) = advfld(i,j)-advdragterms(i,j)*recip_hfacs(i,j,k,
$bi,bj)*recip_drf(k)*(2.*kapparv(i,j,kdownc)*rdrckp1*viscfac+
$bottomdraglinear*dragfac)*(1.-maskdown)
advdragterms(i,j) = 0.d0
end do
end do
end
subroutine admom_v_coriolis( bi, bj, k, adufld, advcoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision one
parameter ( one = 1.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advcoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usejamartwetpoints) then
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx-1
advcoriolisterm(i,j) = advcoriolisterm(i,j)*(4/max(one,
$maskw(i,j,k,bi,bj)+maskw(i+1,j,k,bi,bj)+maskw(i,j-1,k,bi,bj)+
$maskw(i+1,j-1,k,bi,bj)))
end do
end do
endif
if (useenergyconservingcoriolis) then
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx-1
adufld(i+1,j-1) = adufld(i+1,j-1)-0.25*advcoriolisterm(i,j)*
$fcori(i,j-1,bi,bj)
adufld(i,j-1) = adufld(i,j-1)-0.25*advcoriolisterm(i,j)*
$fcori(i,j-1,bi,bj)
adufld(i+1,j) = adufld(i+1,j)-0.25*advcoriolisterm(i,j)*
$fcori(i,j,bi,bj)
adufld(i,j) = adufld(i,j)-0.25*advcoriolisterm(i,j)*fcori(i,
$j,bi,bj)
advcoriolisterm(i,j) = 0.d0
end do
end do
else
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx-1
adufld(i+1,j-1) = adufld(i+1,j-1)-0.125*advcoriolisterm(i,j)
$*(fcori(i,j,bi,bj)+fcori(i,j-1,bi,bj))
adufld(i,j-1) = adufld(i,j-1)-0.125*advcoriolisterm(i,j)*(
$fcori(i,j,bi,bj)+fcori(i,j-1,bi,bj))
adufld(i+1,j) = adufld(i+1,j)-0.125*advcoriolisterm(i,j)*(
$fcori(i,j,bi,bj)+fcori(i,j-1,bi,bj))
adufld(i,j) = adufld(i,j)-0.125*advcoriolisterm(i,j)*(fcori(
$i,j,bi,bj)+fcori(i,j-1,bi,bj))
advcoriolisterm(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_v_coriolis_nh( bi, bj, k, adwfld,
$advcoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision advcoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer kp1
double precision wmsk
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
kp1 = min(k+1,nr)
wmsk = 1.
if (k .eq. nr) then
wmsk = 0.
endif
do j = 2-oly, sny+oly
do i = 1-olx, snx+olx
adwfld(i,j-1,k,bi,bj) = adwfld(i,j-1,k,bi,bj)-0.25*
$advcoriolisterm(i,j)*fcoricos(i,j-1,bi,bj)*anglesinc(i,j-1,bi,bj)*
$rvel2wunit(k)*gravitysign
adwfld(i,j-1,kp1,bi,bj) = adwfld(i,j-1,kp1,bi,bj)-0.25*
$advcoriolisterm(i,j)*fcoricos(i,j-1,bi,bj)*anglesinc(i,j-1,bi,bj)*
$rvel2wunit(kp1)*wmsk*gravitysign
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)-0.25*
$advcoriolisterm(i,j)*fcoricos(i,j,bi,bj)*anglesinc(i,j,bi,bj)*
$rvel2wunit(k)*gravitysign
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)-0.25*
$advcoriolisterm(i,j)*fcoricos(i,j,bi,bj)*anglesinc(i,j,bi,bj)*
$rvel2wunit(kp1)*wmsk*gravitysign
advcoriolisterm(i,j) = 0.d0
end do
end do
end
subroutine admom_v_del2v( bi, bj, k, advfld, hfacz, addel2v )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision addel2v(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
C==============================================
C declare local variables
C==============================================
double precision adfmer(1-olx:snx+olx,1-oly:sny+oly)
double precision adfzon(1-olx:snx+olx,1-oly:sny+oly)
double precision hfaczclosede
double precision hfaczclosedw
integer i
integer ip1
integer ip2
integer j
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfmer(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfzon(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (no_slip_sides) then
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
hfaczclosedw = hfacs(i,j,k,bi,bj)-hfacz(i,j)
hfaczclosede = hfacs(i,j,k,bi,bj)-hfacz(i+1,j)
advfld(i,j) = advfld(i,j)-2*addel2v(i,j)*recip_hfacs(i,j,k,
$bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*(
$hfaczclosedw*dyu(i,j,bi,bj)*recip_dxv(i,j,bi,bj)+hfaczclosede*dyu(
$i+1,j,bi,bj)*recip_dxv(i+1,j,bi,bj))*drf(k)*masks(i,j,k,bi,bj)
end do
end do
endif
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx-1
adfmer(i,j-1) = adfmer(i,j-1)-addel2v(i,j)*recip_drf(k)*
$recip_hfacs(i,j,k,bi,bj)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$masks(i,j,k,bi,bj)
adfmer(i,j) = adfmer(i,j)+addel2v(i,j)*recip_drf(k)*
$recip_hfacs(i,j,k,bi,bj)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$masks(i,j,k,bi,bj)
adfzon(i+1,j) = adfzon(i+1,j)+addel2v(i,j)*recip_drf(k)*
$recip_hfacs(i,j,k,bi,bj)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$masks(i,j,k,bi,bj)
adfzon(i,j) = adfzon(i,j)-addel2v(i,j)*recip_drf(k)*
$recip_hfacs(i,j,k,bi,bj)*recip_ras(i,j,bi,bj)*recip_deepfac2c(k)*
$masks(i,j,k,bi,bj)
addel2v(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly-1
do i = 1-olx+1, snx+olx-1
advfld(i,j+1) = advfld(i,j+1)+adfmer(i,j)*drf(k)*hfacc(i,j,k,
$bi,bj)*dxf(i,j,bi,bj)*recip_dyf(i,j,bi,bj)
advfld(i,j) = advfld(i,j)-adfmer(i,j)*drf(k)*hfacc(i,j,k,bi,
$bj)*dxf(i,j,bi,bj)*recip_dyf(i,j,bi,bj)
adfmer(i,j) = 0.d0
end do
end do
do j = 1-oly+1, sny+oly-1
do i = 1-olx+1, snx+olx
advfld(i-1,j) = advfld(i-1,j)-adfzon(i,j)*drf(k)*hfacz(i,j)*
$dyu(i,j,bi,bj)*recip_dxv(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+adfzon(i,j)*drf(k)*hfacz(i,j)*dyu(i,
$j,bi,bj)*recip_dxv(i,j,bi,bj)
adfzon(i,j) = 0.d0
end do
end do
end
subroutine admom_v_metric_cylinder( bi, bj, ufld, adufld,
$advmetricterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advmetricterms(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
double precision radius
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly+1, sny+oly
do i = 1-olx, snx+olx-1
radius = (yg(i,j,bi,bj)+yg(i+1,j,bi,bj))*0.5d0
if (radius .gt. 0.) then
adufld(i+1,j-1) = adufld(i+1,j-1)-advmetricterms(i,j)*(
$0.125*(ufld(i,j)+ufld(i+1,j)+ufld(i,j-1)+ufld(i+1,j-1))/radius)
adufld(i,j-1) = adufld(i,j-1)-advmetricterms(i,j)*(0.125*(
$ufld(i,j)+ufld(i+1,j)+ufld(i,j-1)+ufld(i+1,j-1))/radius)
adufld(i+1,j) = adufld(i+1,j)-advmetricterms(i,j)*(0.125*(
$ufld(i,j)+ufld(i+1,j)+ufld(i,j-1)+ufld(i+1,j-1))/radius)
adufld(i,j) = adufld(i,j)-advmetricterms(i,j)*(0.125*(ufld(
$i,j)+ufld(i+1,j)+ufld(i,j-1)+ufld(i+1,j-1))/radius)
advmetricterms(i,j) = 0.d0
else
advmetricterms(i,j) = 0.d0
endif
end do
end do
end
subroutine admom_v_metric_nh( bi, bj, k, vfld, advfld, wfld,
$adwfld, advmetricterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advmetricterms(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer i
integer j
integer kp1
double precision wvelbottomoverride
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
kp1 = min(k+1,nr)
wvelbottomoverride = 1.
if (k .eq. nr) then
wvelbottomoverride = 0.
endif
do j = 1-olx+1, sny+oly
do i = 1-olx, snx+olx
advfld(i,j) = advfld(i,j)+0.25*advmetricterms(i,j)*
$recip_rsphere*recip_deepfacc(k)*((wfld(i,j-1,kp1,bi,bj)+wfld(i,j,
$kp1,bi,bj))*rvel2wunit(kp1)*wvelbottomoverride+(wfld(i,j-1,k,bi,
$bj)+wfld(i,j,k,bi,bj))*rvel2wunit(k))*gravitysign
adwfld(i,j-1,k,bi,bj) = adwfld(i,j-1,k,bi,bj)+0.25*
$advmetricterms(i,j)*vfld(i,j)*recip_rsphere*recip_deepfacc(k)*
$rvel2wunit(k)*gravitysign
adwfld(i,j-1,kp1,bi,bj) = adwfld(i,j-1,kp1,bi,bj)+0.25*
$advmetricterms(i,j)*vfld(i,j)*recip_rsphere*recip_deepfacc(k)*
$rvel2wunit(kp1)*wvelbottomoverride*gravitysign
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.25*advmetricterms(
$i,j)*vfld(i,j)*recip_rsphere*recip_deepfacc(k)*rvel2wunit(k)*
$gravitysign
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)+0.25*
$advmetricterms(i,j)*vfld(i,j)*recip_rsphere*recip_deepfacc(k)*
$rvel2wunit(kp1)*wvelbottomoverride*gravitysign
advmetricterms(i,j) = 0.d0
end do
end do
end
subroutine admom_v_metric_sphere( bi, bj, k, ufld, adufld,
$advmetricterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advmetricterms(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-olx+1, sny+oly
do i = 1-olx, snx+olx-1
adufld(i+1,j-1) = adufld(i+1,j-1)-0.125*advmetricterms(i,j)*
$recip_rsphere*recip_deepfacc(k)*(ufld(i,j)+ufld(i+1,j)+ufld(i,j-1)
$+ufld(i+1,j-1))*tanphiatv(i,j,bi,bj)
adufld(i,j-1) = adufld(i,j-1)-0.125*advmetricterms(i,j)*
$recip_rsphere*recip_deepfacc(k)*(ufld(i,j)+ufld(i+1,j)+ufld(i,j-1)
$+ufld(i+1,j-1))*tanphiatv(i,j,bi,bj)
adufld(i+1,j) = adufld(i+1,j)-0.125*advmetricterms(i,j)*
$recip_rsphere*recip_deepfacc(k)*(ufld(i,j)+ufld(i+1,j)+ufld(i,j-1)
$+ufld(i+1,j-1))*tanphiatv(i,j,bi,bj)
adufld(i,j) = adufld(i,j)-0.125*advmetricterms(i,j)*
$recip_rsphere*recip_deepfacc(k)*(ufld(i,j)+ufld(i+1,j)+ufld(i,j-1)
$+ufld(i+1,j-1))*tanphiatv(i,j,bi,bj)
advmetricterms(i,j) = 0.d0
end do
end do
end
subroutine admom_v_rviscflux( bi, bj, k, advfld, kapparv,
$adrviscfluxv )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adrviscfluxv(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (k .le. 1 .or. k .gt. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrviscfluxv(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
advfld(i,j,k-1,bi,bj) = advfld(i,j,k-1,bi,bj)+adrviscfluxv(
$i,j)*kapparv(i,j,k)*ras(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)*rksign*
$recip_drc(k)*masks(i,j,k,bi,bj)*masks(i,j,k-1,bi,bj)
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)-adrviscfluxv(i,j)*
$kapparv(i,j,k)*ras(i,j,bi,bj)*deepfac2f(k)*rhofacf(k)*rksign*
$recip_drc(k)*masks(i,j,k,bi,bj)*masks(i,j,k-1,bi,bj)
adrviscfluxv(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_v_sidedrag( bi, bj, k, vfld, advfld, del2v,
$addel2v, hfacz, viscah_z, adviscah_z, visca4_z, advisca4_z,
$advdragterms )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision addel2v(1-olx:snx+olx,1-oly:sny+oly)
double precision advdragterms(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision del2v(1-olx:snx+olx,1-oly:sny+oly)
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision a4tmp
double precision ahtmp
double precision hfaczclosede
double precision hfaczclosedw
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (sidedragfactor .le. 0.) then
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
hfaczclosedw = hfacs(i,j,k,bi,bj)-hfacz(i,j)
hfaczclosede = hfacs(i,j,k,bi,bj)-hfacz(i+1,j)
ahtmp = min(viscah+viscahgrid*ras(i,j,bi,bj)/deltatmom,
$viscahmax)
a4tmp = min(visca4+visca4grid*ras(i,j,bi,bj)**2/deltatmom,
$visca4max)
if (visca4gridmax .gt. 0.) then
a4tmp = min(a4tmp,visca4gridmax*ras(i,j,bi,bj)**2/
$deltatmom)
endif
a4tmp = max(a4tmp,visca4gridmin*ras(i,j,bi,bj)**2/deltatmom)
addel2v(i,j) = addel2v(i,j)+2.*advdragterms(i,j)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*(
$hfaczclosedw*dyu(i,j,bi,bj)*recip_dxv(i,j,bi,bj)+hfaczclosede*dyu(
$i+1,j,bi,bj)*recip_dxv(i+1,j,bi,bj))*drf(k)*a4tmp*cosfacv(j,bi,bj)
advfld(i,j) = advfld(i,j)-2.*advdragterms(i,j)*recip_hfacs(
$i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*(hfaczclosedw*dyu(
$i,j,bi,bj)*recip_dxv(i,j,bi,bj)+hfaczclosede*dyu(i+1,j,bi,bj)*
$recip_dxv(i+1,j,bi,bj))*drf(k)*ahtmp*cosfacv(j,bi,bj)
advdragterms(i,j) = 0.d0
end do
end do
else
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
hfaczclosedw = hfacs(i,j,k,bi,bj)-hfacs(i-1,j,k,bi,bj)
hfaczclosede = hfacs(i,j,k,bi,bj)-hfacs(i+1,j,k,bi,bj)
hfaczclosedw = max(0.d0,hfaczclosedw)
hfaczclosede = max(0.d0,hfaczclosede)
addel2v(i,j) = addel2v(i,j)-advdragterms(i,j)*recip_hfacs(i,
$j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*((-(hfaczclosedw*dyu(
$i,j,bi,bj)*recip_dxv(i,j,bi,bj)*visca4_z(i,j)*cosfacv(j,bi,bj)))-
$hfaczclosede*dyu(i+1,j,bi,bj)*recip_dxv(i+1,j,bi,bj)*visca4_z(i+1,
$j)*cosfacv(j,bi,bj))*drf(k)*sidedragfactor
advfld(i,j) = advfld(i,j)-advdragterms(i,j)*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*(hfaczclosedw*dyu(i,j,
$bi,bj)*recip_dxv(i,j,bi,bj)*viscah_z(i,j)*cosfacv(j,bi,bj)+
$hfaczclosede*dyu(i+1,j,bi,bj)*recip_dxv(i+1,j,bi,bj)*viscah_z(i+1,
$j)*cosfacv(j,bi,bj))*drf(k)*sidedragfactor
advisca4_z(i+1,j) = advisca4_z(i+1,j)+advdragterms(i,j)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*
$hfaczclosede*dyu(i+1,j,bi,bj)*recip_dxv(i+1,j,bi,bj)*del2v(i,j)*
$cosfacv(j,bi,bj)*drf(k)*sidedragfactor
advisca4_z(i,j) = advisca4_z(i,j)+advdragterms(i,j)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*
$hfaczclosedw*dyu(i,j,bi,bj)*recip_dxv(i,j,bi,bj)*del2v(i,j)*
$cosfacv(j,bi,bj)*drf(k)*sidedragfactor
adviscah_z(i+1,j) = adviscah_z(i+1,j)-advdragterms(i,j)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*
$hfaczclosede*dyu(i+1,j,bi,bj)*recip_dxv(i+1,j,bi,bj)*vfld(i,j)*
$cosfacv(j,bi,bj)*drf(k)*sidedragfactor
adviscah_z(i,j) = adviscah_z(i,j)-advdragterms(i,j)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*
$hfaczclosedw*dyu(i,j,bi,bj)*recip_dxv(i,j,bi,bj)*vfld(i,j)*
$cosfacv(j,bi,bj)*drf(k)*sidedragfactor
advdragterms(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_v_xviscflux( bi, bj, k, vfld, advfld, del2v,
$addel2v, hfacz, adxviscfluxv, viscah_z, adviscah_z, visca4_z,
$advisca4_z )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2v(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adxviscfluxv(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision del2v(1-olx:snx+olx,1-oly:sny+oly)
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx+1, snx+olx
addel2v(i-1,j) = addel2v(i-1,j)-adxviscfluxv(i,j)*dyu(i,j,bi,
$bj)*drf(k)*hfacz(i,j)*visca4_z(i,j)*cosfacv(j,bi,bj)*recip_dxv(i,
$j,bi,bj)
addel2v(i,j) = addel2v(i,j)+adxviscfluxv(i,j)*dyu(i,j,bi,bj)*
$drf(k)*hfacz(i,j)*visca4_z(i,j)*cosfacv(j,bi,bj)*recip_dxv(i,j,bi,
$bj)
advfld(i-1,j) = advfld(i-1,j)+adxviscfluxv(i,j)*dyu(i,j,bi,bj)
$*drf(k)*hfacz(i,j)*viscah_z(i,j)*cosfacv(j,bi,bj)*recip_dxv(i,j,
$bi,bj)
advfld(i,j) = advfld(i,j)-adxviscfluxv(i,j)*dyu(i,j,bi,bj)*
$drf(k)*hfacz(i,j)*viscah_z(i,j)*cosfacv(j,bi,bj)*recip_dxv(i,j,bi,
$bj)
advisca4_z(i,j) = advisca4_z(i,j)+adxviscfluxv(i,j)*dyu(i,j,
$bi,bj)*drf(k)*hfacz(i,j)*(del2v(i,j)-del2v(i-1,j))*cosfacv(j,bi,
$bj)*recip_dxv(i,j,bi,bj)
adviscah_z(i,j) = adviscah_z(i,j)-adxviscfluxv(i,j)*dyu(i,j,
$bi,bj)*drf(k)*hfacz(i,j)*(vfld(i,j)-vfld(i-1,j))*cosfacv(j,bi,bj)*
$recip_dxv(i,j,bi,bj)
adxviscfluxv(i,j) = 0.d0
end do
end do
end
subroutine admom_v_yviscflux( bi, bj, k, vfld, advfld, del2v,
$addel2v, adyviscfluxv, viscah_d, adviscah_d, visca4_d, advisca4_d
$)
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2v(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adyviscfluxv(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision del2v(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly-1
do i = 1-olx, snx+olx-1
addel2v(i,j+1) = addel2v(i,j+1)+adyviscfluxv(i,j)*dxf(i,j,bi,
$bj)*drf(k)*hfacc(i,j,k,bi,bj)*visca4_d(i,j)*recip_dyf(i,j,bi,bj)
addel2v(i,j) = addel2v(i,j)-adyviscfluxv(i,j)*dxf(i,j,bi,bj)*
$drf(k)*hfacc(i,j,k,bi,bj)*visca4_d(i,j)*recip_dyf(i,j,bi,bj)
advfld(i,j+1) = advfld(i,j+1)-adyviscfluxv(i,j)*dxf(i,j,bi,bj)
$*drf(k)*hfacc(i,j,k,bi,bj)*viscah_d(i,j)*recip_dyf(i,j,bi,bj)
advfld(i,j) = advfld(i,j)+adyviscfluxv(i,j)*dxf(i,j,bi,bj)*
$drf(k)*hfacc(i,j,k,bi,bj)*viscah_d(i,j)*recip_dyf(i,j,bi,bj)
advisca4_d(i,j) = advisca4_d(i,j)+adyviscfluxv(i,j)*dxf(i,j,
$bi,bj)*drf(k)*hfacc(i,j,k,bi,bj)*(del2v(i,j+1)-del2v(i,j))*
$recip_dyf(i,j,bi,bj)
adviscah_d(i,j) = adviscah_d(i,j)-adyviscfluxv(i,j)*dxf(i,j,
$bi,bj)*drf(k)*hfacc(i,j,k,bi,bj)*(vfld(i,j+1)-vfld(i,j))*
$recip_dyf(i,j,bi,bj)
adyviscfluxv(i,j) = 0.d0
end do
end do
end
subroutine admom_vecinv( bi, bj, imin, imax, jmin, jmax, k, kup,
$kdown, kapparu, kapparv, adfveru, adfverv, adgudiss, adgvdiss,
$mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
real*8 comlev1_bibj_k_vort3_38h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadvort3/ comlev1_bibj_k_vort3_38h
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
double precision adfveru(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adfverv(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adgudiss(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvdiss(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
integer kdown
integer kup
integer mythid
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision addel2u(1-olx:snx+olx,1-oly:sny+oly)
double precision addel2v(1-olx:snx+olx,1-oly:sny+oly)
double precision addstar(1-olx:snx+olx,1-oly:sny+oly)
double precision adhdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
double precision adomega3(1-olx:snx+olx,1-oly:sny+oly)
double precision adstrain(1-olx:snx+olx,1-oly:sny+oly)
double precision adtension(1-olx:snx+olx,1-oly:sny+oly)
double precision aducf(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advcf(1-olx:snx+olx,1-oly:sny+oly)
double precision advf(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3(1-olx:snx+olx,1-oly:sny+oly)
double precision advrf(1-olx:snx+olx,1-oly:sny+oly)
double precision adzstar(1-olx:snx+olx,1-oly:sny+oly)
double precision ardudrfac
double precision ardvdrfac
logical biharmonic
logical bottomdragterms
double precision del2u(1-olx:snx+olx,1-oly:sny+oly)
double precision del2v(1-olx:snx+olx,1-oly:sny+oly)
double precision dstar(1-olx:snx+olx,1-oly:sny+oly)
logical harmonic
double precision hdiv(1-olx:snx+olx,1-oly:sny+oly)
integer help_h
integer help_i
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer imomkey
integer ip1
integer ip2
integer j
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
integer max0
integer max1
integer max2
integer max3
double precision omega3(1-olx:snx+olx,1-oly:sny+oly)
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision sidemaskfac
double precision strain(1-olx:snx+olx,1-oly:sny+oly)
double precision tension(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
logical usevariableviscosity
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3(1-olx:snx+olx,1-oly:sny+oly)
double precision zstar(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addel2u(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addel2v(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addstar(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adhdiv(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adke(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adomega3(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adstrain(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtension(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
aducf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adufld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advcf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advfld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_d(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advisca4_z(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_d(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adviscah_z(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advort3(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advrf(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adzstar(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
act0 = k-1
max0 = nr
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
imomkey = act0+1+act1*max0+act2*max0*max1+act3*max0*max1*max2+
$act4*max0*max1*max2*max3
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
del2u(i,j) = 0.
del2v(i,j) = 0.
dstar(i,j) = 0.
zstar(i,j) = 0.
vort3(i,j) = 0.
omega3(i,j) = 0.
viscah_z(i,j) = 0.
visca4_z(i,j) = 0.
strain(i,j) = 0.d0
end do
end do
ardudrfac = vffacmom*1.
ardvdrfac = vffacmom*1.
if (no_slip_sides) then
sidemaskfac = sidedragfactor
else
sidemaskfac = 0.d0
endif
if (no_slip_bottom .or. bottomdragquadratic .ne. 0. .or.
$bottomdraglinear .ne. 0.) then
bottomdragterms = .true.
else
bottomdragterms = .false.
endif
call mom_calc_hfacz( bi,bj,k,hfacz,r_hfacz,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
ufld(i,j) = uvel(i,j,k,bi,bj)
vfld(i,j) = vvel(i,j,k,bi,bj)
end do
end do
call mom_calc_ke( bi,bj,k,selectkescheme,ufld,vfld,ke,mythid )
call mom_calc_relvort3( bi,bj,k,ufld,vfld,hfacz,vort3,mythid )
if (momviscosity) then
call mom_calc_hdiv( bi,bj,k,2,ufld,vfld,hdiv,mythid )
call mom_calc_tension( bi,bj,k,ufld,vfld,tension,mythid )
call mom_calc_strain( bi,bj,k,ufld,vfld,hfacz,strain,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
vort3(i,j) = sidemaskfac*vort3(i,j)
strain(i,j) = sidemaskfac*strain(i,j)
endif
end do
end do
call mom_calc_visc( bi,bj,k,viscah_z,viscah_d,visca4_z,visca4_d,
$harmonic,biharmonic,usevariableviscosity,hdiv,vort3,tension,
$strain,ke,hfacz,mythid )
if (biharmonic) then
call mom_vi_del2uv( bi,bj,k,hdiv,vort3,hfacz,del2u,del2v,
$mythid )
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
vort3(i,j) = 0.
endif
end do
end do
if (useabsvorticity) then
call mom_calc_absvort3( bi,bj,k,vort3,omega3,mythid )
endif
do j = jmin, jmax
do i = imin, imax
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)*masks(i,j,k,bi,bj)
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)*maskw(i,j,k,bi,bj)
end do
end do
if (usenhmterms) then
do j = jmin, jmax
do i = imin, imax
advcf(i,j) = advcf(i,j)+adgv(i,j,k,bi,bj)
end do
end do
call admom_v_metric_nh( bi,bj,k,vfld,advfld,wvel,adwvel,advcf )
do j = jmin, jmax
do i = imin, imax
aducf(i,j) = aducf(i,j)+adgu(i,j,k,bi,bj)
end do
end do
call admom_u_metric_nh( bi,bj,k,ufld,adufld,wvel,adwvel,aducf )
endif
if (use3dcoriolis) then
if (usingcurvilineargrid) then
do j = jmin, jmax
do i = imin, imax
advcf(i,j) = advcf(i,j)+adgv(i,j,k,bi,bj)
end do
end do
call admom_v_coriolis_nh( bi,bj,k,adwvel,advcf )
endif
do j = jmin, jmax
do i = imin, imax
aducf(i,j) = aducf(i,j)+adgu(i,j,k,bi,bj)
end do
end do
call admom_u_coriolis_nh( bi,bj,k,adwvel,aducf )
endif
if (momadvection) then
do j = jmin, jmax
do i = imin, imax
advcf(i,j) = advcf(i,j)+adgv(i,j,k,bi,bj)
end do
end do
call admom_vi_v_grad_ke( bi,bj,k,adke,advcf )
do j = jmin, jmax
do i = imin, imax
aducf(i,j) = aducf(i,j)+adgu(i,j,k,bi,bj)
end do
end do
call admom_vi_u_grad_ke( bi,bj,k,adke,aducf )
if ( .not. momimplvertadv) then
do j = jmin, jmax
do i = imin, imax
advcf(i,j) = advcf(i,j)+adgv(i,j,k,bi,bj)
end do
end do
call admom_vi_v_vertshear( bi,bj,k,vvel,advvel,wvel,adwvel,
$advcf )
do j = jmin, jmax
do i = imin, imax
aducf(i,j) = aducf(i,j)+adgu(i,j,k,bi,bj)
end do
end do
call admom_vi_u_vertshear( bi,bj,k,uvel,aduvel,wvel,adwvel,
$aducf )
endif
do j = jmin, jmax
do i = imin, imax
advcf(i,j) = advcf(i,j)+adgv(i,j,k,bi,bj)
end do
end do
if ((highordervorticity .or. upwindvorticity) .and.
$useabsvorticity) then
call admom_vi_v_coriolis_c4( bi,bj,k,ufld,adufld,omega3,
$adomega3,r_hfacz,advcf )
else if (highordervorticity .or. upwindvorticity) then
call admom_vi_v_coriolis_c4( bi,bj,k,ufld,adufld,vort3,
$advort3,r_hfacz,advcf )
else if (useabsvorticity) then
call admom_vi_v_coriolis( bi,bj,k,ufld,adufld,omega3,adomega3,
$hfacz,r_hfacz,advcf )
else
call admom_vi_v_coriolis( bi,bj,k,ufld,adufld,vort3,advort3,
$hfacz,r_hfacz,advcf )
endif
do j = jmin, jmax
do i = imin, imax
aducf(i,j) = aducf(i,j)+adgu(i,j,k,bi,bj)
end do
end do
if ((highordervorticity .or. upwindvorticity) .and.
$useabsvorticity) then
call admom_vi_u_coriolis_c4( bi,bj,k,vfld,advfld,omega3,
$adomega3,r_hfacz,aducf )
else if (highordervorticity .or. upwindvorticity) then
call admom_vi_u_coriolis_c4( bi,bj,k,vfld,advfld,vort3,
$advort3,r_hfacz,aducf )
else if (useabsvorticity) then
call admom_vi_u_coriolis( bi,bj,k,vfld,advfld,omega3,adomega3,
$hfacz,r_hfacz,aducf )
else
call admom_vi_u_coriolis( bi,bj,k,vfld,advfld,vort3,advort3,
$hfacz,r_hfacz,aducf )
endif
endif
if (usecoriolis .and. ( .not. (usecdscheme .or. useabsvorticity
$.and. momadvection))) then
do j = jmin, jmax
do i = imin, imax
advcf(i,j) = advcf(i,j)+adgv(i,j,k,bi,bj)
adgv(i,j,k,bi,bj) = 0.d0
aducf(i,j) = aducf(i,j)+adgu(i,j,k,bi,bj)
adgu(i,j,k,bi,bj) = 0.d0
end do
end do
if (useabsvorticity) then
call admom_vi_v_coriolis( bi,bj,k,ufld,adufld,omega3,adomega3,
$hfacz,r_hfacz,advcf )
call admom_vi_u_coriolis( bi,bj,k,vfld,advfld,omega3,adomega3,
$hfacz,r_hfacz,aducf )
else
call admom_vi_coriolis( bi,bj,k,adufld,advfld,aducf,advcf )
endif
else
do j = jmin, jmax
do i = imin, imax
adgv(i,j,k,bi,bj) = 0.d0
adgu(i,j,k,bi,bj) = 0.d0
end do
end do
endif
if (useabsvorticity) then
call admom_calc_absvort3( advort3,adomega3 )
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
advort3(i,j) = 0.d0
endif
end do
end do
if (momviscosity .and. bottomdragterms) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgvdiss(i,j)
end do
end do
call admom_v_bottomdrag( bi,bj,k,vfld,advfld,ke,adke,kapparv,
$advf )
endif
if (momviscosity .and. no_slip_sides) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgvdiss(i,j)
end do
end do
call admom_v_sidedrag( bi,bj,k,vfld,advfld,del2v,addel2v,hfacz,
$viscah_z,adviscah_z,visca4_z,advisca4_z,advf )
endif
if (momviscosity .and. ( .not. implicitviscosity)) then
help_i = k+1
do j = jmin, jmax
do i = imin, imax
adfverv(i,j,kdown) = adfverv(i,j,kdown)-adgvdiss(i,j)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*rksign
adfverv(i,j,kup) = adfverv(i,j,kup)+adgvdiss(i,j)*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)*recip_ras(i,j,bi,bj)*rksign
end do
end do
do j = jmin, jmax
do i = imin, imax
advrf(i,j) = advrf(i,j)+adfverv(i,j,kdown)*ardvdrfac
adfverv(i,j,kdown) = 0.d0
end do
end do
call admom_v_rviscflux( bi,bj,help_i,advvel,kapparv,advrf )
endif
if (momviscosity .and. bottomdragterms) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgudiss(i,j)
end do
end do
call admom_u_bottomdrag( bi,bj,k,ufld,adufld,ke,adke,kapparu,
$advf )
endif
if (momviscosity .and. no_slip_sides) then
do j = jmin, jmax
do i = imin, imax
advf(i,j) = advf(i,j)+adgudiss(i,j)
end do
end do
call admom_u_sidedrag( bi,bj,k,ufld,adufld,del2u,addel2u,hfacz,
$viscah_z,adviscah_z,visca4_z,advisca4_z,advf )
endif
if (momviscosity .and. ( .not. implicitviscosity)) then
help_h = k+1
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
adfveru(i,j,kdown) = adfveru(i,j,kdown)-adgudiss(i,j)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*rksign
adfveru(i,j,kup) = adfveru(i,j,kup)+adgudiss(i,j)*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)*recip_raw(i,j,bi,bj)*rksign
end do
end do
do j = jmin, jmax
do i = imin, imax
advrf(i,j) = advrf(i,j)+adfveru(i,j,kdown)*ardudrfac
adfveru(i,j,kdown) = 0.d0
end do
end do
call admom_u_rviscflux( bi,bj,help_h,aduvel,kapparu,advrf )
endif
if (momviscosity) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
vort3(ip1,ip2) = comlev1_bibj_k_vort3_38h(ip1,ip2,imomkey)
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
vort3(i,j) = sidemaskfac*vort3(i,j)
endif
end do
end do
if (biharmonic) then
call mom_calc_hdiv( bi,bj,k,2,del2u,del2v,dstar,mythid )
call mom_calc_relvort3( bi,bj,k,del2u,del2v,hfacz,zstar,
$mythid )
endif
if (usestraintensionvisc) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
strain(i,j) = 0.d0
endif
end do
end do
call admom_hdissip( bi,bj,tension,adtension,strain,adstrain,
$viscah_z,adviscah_z,viscah_d,adviscah_d,harmonic,adgudiss,
$adgvdiss )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
adstrain(i,j) = 0.d0
endif
end do
end do
else
call admom_vi_hdissip( bi,bj,k,hdiv,adhdiv,vort3,advort3,
$hfacz,dstar,addstar,zstar,adzstar,viscah_z,adviscah_z,viscah_d,
$adviscah_d,visca4_z,advisca4_z,visca4_d,advisca4_d,harmonic,
$biharmonic,usevariableviscosity,adgudiss,adgvdiss )
endif
if (biharmonic) then
call admom_calc_relvort3( bi,bj,addel2u,addel2v,adzstar )
call admom_calc_hdiv( bi,bj,k,2,addel2u,addel2v,addstar )
call admom_vi_del2uv( bi,bj,k,adhdiv,advort3,hfacz,addel2u,
$addel2v )
endif
call mom_calc_hdiv( bi,bj,k,2,ufld,vfld,hdiv,mythid )
call mom_calc_strain( bi,bj,k,ufld,vfld,hfacz,strain,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
strain(i,j) = sidemaskfac*strain(i,j)
endif
end do
end do
call admom_calc_visc( bi,bj,k,adviscah_z,adviscah_d,advisca4_z,
$advisca4_d,hdiv,adhdiv,vort3,advort3,tension,adtension,strain,
$adstrain,ke,adke,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
adstrain(i,j) = adstrain(i,j)*sidemaskfac
advort3(i,j) = advort3(i,j)*sidemaskfac
endif
end do
end do
call admom_calc_strain( bi,bj,adufld,advfld,adstrain )
call admom_calc_tension( bi,bj,adufld,advfld,adtension )
call admom_calc_hdiv( bi,bj,k,2,adufld,advfld,adhdiv )
endif
call admom_calc_relvort3( bi,bj,adufld,advfld,advort3 )
call admom_calc_ke( bi,bj,k,selectkescheme,ufld,adufld,vfld,
$advfld,adke )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+advfld(i,j)
advfld(i,j) = 0.d0
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+adufld(i,j)
adufld(i,j) = 0.d0
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adgvdiss(i,j) = 0.d0
adgudiss(i,j) = 0.d0
end do
end do
end
subroutine mdmom_vecinv( bi, bj, imin, imax, jmin, jmax, k, kup,
$kdown, kapparu, kapparv, fveru, fverv, gudiss, gvdiss, mytime,
$myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_k_vort3_38h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadvort3/ comlev1_bibj_k_vort3_38h
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer bi
integer bj
double precision fveru(1-olx:snx+olx,1-oly:sny+oly,2)
double precision fverv(1-olx:snx+olx,1-oly:sny+oly,2)
double precision gudiss(1-olx:snx+olx,1-oly:sny+oly)
double precision gvdiss(1-olx:snx+olx,1-oly:sny+oly)
integer imax
integer imin
integer jmax
integer jmin
integer k
double precision kapparu(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kapparv(1-olx:snx+olx,1-oly:sny+oly,nr)
integer kdown
integer kup
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer act0
integer act1
integer act2
integer act3
integer act4
double precision ardudrfac
double precision ardvdrfac
logical biharmonic
logical bottomdragterms
double precision del2u(1-olx:snx+olx,1-oly:sny+oly)
double precision del2v(1-olx:snx+olx,1-oly:sny+oly)
double precision dstar(1-olx:snx+olx,1-oly:sny+oly)
logical harmonic
double precision hdiv(1-olx:snx+olx,1-oly:sny+oly)
integer help_h
integer help_i
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer imomkey
integer iqa
integer iqb
integer j
double precision ke(1-olx:snx+olx,1-oly:sny+oly)
integer max0
integer max1
integer max2
integer max3
double precision omega3(1-olx:snx+olx,1-oly:sny+oly)
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision sidemaskfac
double precision strain(1-olx:snx+olx,1-oly:sny+oly)
double precision tension(1-olx:snx+olx,1-oly:sny+oly)
double precision ucf(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
logical usevariableviscosity
double precision vcf(1-olx:snx+olx,1-oly:sny+oly)
double precision vf(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3(1-olx:snx+olx,1-oly:sny+oly)
double precision vrf(1-olx:snx+olx,1-oly:sny+oly)
double precision zstar(1-olx:snx+olx,1-oly:sny+oly)
C**********************************************
C executable statements of routine
C**********************************************
fveru(1,1,kup) = fveru(1,1,kup)
fverv(1,1,kup) = fverv(1,1,kup)
act0 = k-1
max0 = nr
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
imomkey = act0+1+act1*max0+act2*max0*max1+act3*max0*max1*max2+
$act4*max0*max1*max2*max3
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
vf(i,j) = 0.
vrf(i,j) = 0.
ucf(i,j) = 0.
vcf(i,j) = 0.
del2u(i,j) = 0.
del2v(i,j) = 0.
dstar(i,j) = 0.
zstar(i,j) = 0.
gudiss(i,j) = 0.
gvdiss(i,j) = 0.
vort3(i,j) = 0.
omega3(i,j) = 0.
hdiv(i,j) = 0.
viscah_z(i,j) = 0.
viscah_d(i,j) = 0.
visca4_z(i,j) = 0.
visca4_d(i,j) = 0.
strain(i,j) = 0.d0
tension(i,j) = 0.d0
end do
end do
ardudrfac = vffacmom*1.
ardvdrfac = vffacmom*1.
if (no_slip_sides) then
sidemaskfac = sidedragfactor
else
sidemaskfac = 0.d0
endif
if (no_slip_bottom .or. bottomdragquadratic .ne. 0. .or.
$bottomdraglinear .ne. 0.) then
bottomdragterms = .true.
else
bottomdragterms = .false.
endif
call mom_calc_hfacz( bi,bj,k,hfacz,r_hfacz,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
ufld(i,j) = uvel(i,j,k,bi,bj)
vfld(i,j) = vvel(i,j,k,bi,bj)
end do
end do
call mom_calc_ke( bi,bj,k,selectkescheme,ufld,vfld,ke,mythid )
call mom_calc_relvort3( bi,bj,k,ufld,vfld,hfacz,vort3,mythid )
if (momviscosity) then
do iqb = 1-oly, sny+oly
do iqa = 1-olx, snx+olx
comlev1_bibj_k_vort3_38h(iqa,iqb,imomkey) = vort3(iqa,iqb)
end do
end do
call mom_calc_hdiv( bi,bj,k,2,ufld,vfld,hdiv,mythid )
call mom_calc_tension( bi,bj,k,ufld,vfld,tension,mythid )
call mom_calc_strain( bi,bj,k,ufld,vfld,hfacz,strain,mythid )
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
vort3(i,j) = sidemaskfac*vort3(i,j)
strain(i,j) = sidemaskfac*strain(i,j)
endif
end do
end do
call mdmom_calc_visc( bi,bj,k,viscah_z,viscah_d,visca4_z,
$visca4_d,harmonic,biharmonic,usevariableviscosity,hdiv,vort3,
$tension,strain,ke,hfacz,mythid )
if (biharmonic) then
call mom_vi_del2uv( bi,bj,k,hdiv,vort3,hfacz,del2u,del2v,
$mythid )
call mom_calc_hdiv( bi,bj,k,2,del2u,del2v,dstar,mythid )
call mom_calc_relvort3( bi,bj,k,del2u,del2v,hfacz,zstar,
$mythid )
endif
if (usestraintensionvisc) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
strain(i,j) = 0.d0
endif
end do
end do
call mom_hdissip( bi,bj,k,hdiv,vort3,tension,strain,ke,hfacz,
$viscah_z,viscah_d,visca4_z,visca4_d,harmonic,biharmonic,
$usevariableviscosity,gudiss,gvdiss,mythid )
else
call mom_vi_hdissip( bi,bj,k,hdiv,vort3,tension,strain,ke,
$hfacz,dstar,zstar,viscah_z,viscah_d,visca4_z,visca4_d,harmonic,
$biharmonic,usevariableviscosity,gudiss,gvdiss,mythid )
endif
endif
if (momviscosity .and. ( .not. implicitviscosity)) then
help_h = k+1
call mom_u_rviscflux( bi,bj,help_h,uvel,kapparu,vrf,mythid )
do j = jmin, jmax
do i = imin, imax
fveru(i,j,kdown) = ardudrfac*vrf(i,j)
end do
end do
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
gudiss(i,j) = gudiss(i,j)-recip_hfacw(i,j,k,bi,bj)*
$recip_drf(k)*recip_raw(i,j,bi,bj)*(fveru(i,j,kdown)-fveru(i,j,kup)
$)*rksign
end do
end do
endif
if (momviscosity .and. no_slip_sides) then
call mom_u_sidedrag( bi,bj,k,ufld,del2u,hfacz,viscah_z,visca4_z,
$harmonic,biharmonic,usevariableviscosity,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gudiss(i,j) = gudiss(i,j)+vf(i,j)
end do
end do
endif
if (momviscosity .and. bottomdragterms) then
call mom_u_bottomdrag( bi,bj,k,ufld,ke,kapparu,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gudiss(i,j) = gudiss(i,j)+vf(i,j)
end do
end do
endif
if (momviscosity .and. ( .not. implicitviscosity)) then
help_i = k+1
call mom_v_rviscflux( bi,bj,help_i,vvel,kapparv,vrf,mythid )
do j = jmin, jmax
do i = imin, imax
fverv(i,j,kdown) = ardvdrfac*vrf(i,j)
end do
end do
do j = jmin, jmax
do i = imin, imax
gvdiss(i,j) = gvdiss(i,j)-recip_hfacs(i,j,k,bi,bj)*
$recip_drf(k)*recip_ras(i,j,bi,bj)*(fverv(i,j,kdown)-fverv(i,j,kup)
$)*rksign
end do
end do
endif
if (momviscosity .and. no_slip_sides) then
call mom_v_sidedrag( bi,bj,k,vfld,del2v,hfacz,viscah_z,visca4_z,
$harmonic,biharmonic,usevariableviscosity,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gvdiss(i,j) = gvdiss(i,j)+vf(i,j)
end do
end do
endif
if (momviscosity .and. bottomdragterms) then
call mom_v_bottomdrag( bi,bj,k,vfld,ke,kapparv,vf,mythid )
do j = jmin, jmax
do i = imin, imax
gvdiss(i,j) = gvdiss(i,j)+vf(i,j)
end do
end do
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
if (hfacz(i,j) .eq. 0.) then
vort3(i,j) = 0.
endif
end do
end do
if (useabsvorticity) then
call mom_calc_absvort3( bi,bj,k,vort3,omega3,mythid )
endif
if (usecoriolis .and. ( .not. (usecdscheme .or. useabsvorticity
$.and. momadvection))) then
if (useabsvorticity) then
call mom_vi_u_coriolis( bi,bj,k,vfld,omega3,hfacz,r_hfacz,ucf,
$mythid )
call mom_vi_v_coriolis( bi,bj,k,ufld,omega3,hfacz,r_hfacz,vcf,
$mythid )
else
call mom_vi_coriolis( bi,bj,k,ufld,vfld,hfacz,r_hfacz,ucf,vcf,
$mythid )
endif
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = ucf(i,j)
gv(i,j,k,bi,bj) = vcf(i,j)
end do
end do
else
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = 0.d0
gv(i,j,k,bi,bj) = 0.d0
end do
end do
endif
if (momadvection) then
if ((highordervorticity .or. upwindvorticity) .and.
$useabsvorticity) then
call mom_vi_u_coriolis_c4( bi,bj,k,vfld,omega3,r_hfacz,ucf,
$mythid )
else if (highordervorticity .or. upwindvorticity) then
call mom_vi_u_coriolis_c4( bi,bj,k,vfld,vort3,r_hfacz,ucf,
$mythid )
else if (useabsvorticity) then
call mom_vi_u_coriolis( bi,bj,k,vfld,omega3,hfacz,r_hfacz,ucf,
$mythid )
else
call mom_vi_u_coriolis( bi,bj,k,vfld,vort3,hfacz,r_hfacz,ucf,
$mythid )
endif
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+ucf(i,j)
end do
end do
if ((highordervorticity .or. upwindvorticity) .and.
$useabsvorticity) then
call mom_vi_v_coriolis_c4( bi,bj,k,ufld,omega3,r_hfacz,vcf,
$mythid )
else if (highordervorticity .or. upwindvorticity) then
call mom_vi_v_coriolis_c4( bi,bj,k,ufld,vort3,r_hfacz,vcf,
$mythid )
else if (useabsvorticity) then
call mom_vi_v_coriolis( bi,bj,k,ufld,omega3,hfacz,r_hfacz,vcf,
$mythid )
else
call mom_vi_v_coriolis( bi,bj,k,ufld,vort3,hfacz,r_hfacz,vcf,
$mythid )
endif
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+vcf(i,j)
end do
end do
if ( .not. momimplvertadv) then
call mom_vi_u_vertshear( bi,bj,k,uvel,wvel,ucf,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+ucf(i,j)
end do
end do
call mom_vi_v_vertshear( bi,bj,k,vvel,wvel,vcf,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+vcf(i,j)
end do
end do
endif
call mom_vi_u_grad_ke( bi,bj,k,ke,ucf,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+ucf(i,j)
end do
end do
call mom_vi_v_grad_ke( bi,bj,k,ke,vcf,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+vcf(i,j)
end do
end do
endif
if (use3dcoriolis) then
call mom_u_coriolis_nh( bi,bj,k,wvel,ucf,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+ucf(i,j)
end do
end do
if (usingcurvilineargrid) then
call mom_v_coriolis_nh( bi,bj,k,wvel,vcf,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+vcf(i,j)
end do
end do
endif
endif
if (usenhmterms) then
call mom_u_metric_nh( bi,bj,k,ufld,wvel,ucf,mythid )
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)+ucf(i,j)
end do
end do
call mom_v_metric_nh( bi,bj,k,vfld,wvel,vcf,mythid )
do j = jmin, jmax
do i = imin, imax
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)+vcf(i,j)
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
gu(i,j,k,bi,bj) = gu(i,j,k,bi,bj)*maskw(i,j,k,bi,bj)
gv(i,j,k,bi,bj) = gv(i,j,k,bi,bj)*masks(i,j,k,bi,bj)
end do
end do
end
subroutine admom_vi_coriolis( bi, bj, k, adufld, advfld,
$aducoriolisterm, advcoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision aducoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advcoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
double precision adubarxy
double precision advbarxy
double precision epsil
integer i
integer j
double precision ubarxyh
double precision vbarxyh
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adubarxy = 0.d0
advbarxy = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
epsil = 1.d-9
if (usejamartwetpoints) then
do j = sny+oly, 2-oly, -1
adubarxy = 0.d0
do i = snx+olx-1, 1-olx, -1
adubarxy = 0.d0
adubarxy = adubarxy-0.5*advcoriolisterm(i,j)*(fcorig(i,j,bi,
$bj)+fcorig(i+1,j,bi,bj))*recip_dyc(i,j,bi,bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
ubarxyh = max(epsil,hfacw(i,j,k,bi,bj)+hfacw(i,j-1,k,bi,bj)+
$hfacw(i+1,j,k,bi,bj)+hfacw(i+1,j-1,k,bi,bj))
adufld(i+1,j-1) = adufld(i+1,j-1)+adubarxy*(dyg(i+1,j-1,bi,
$bj)*hfacw(i+1,j-1,k,bi,bj)/ubarxyh)
adufld(i,j-1) = adufld(i,j-1)+adubarxy*(dyg(i,j-1,bi,bj)*
$hfacw(i,j-1,k,bi,bj)/ubarxyh)
adufld(i+1,j) = adufld(i+1,j)+adubarxy*(dyg(i+1,j,bi,bj)*
$hfacw(i+1,j,k,bi,bj)/ubarxyh)
adufld(i,j) = adufld(i,j)+adubarxy*(dyg(i,j,bi,bj)*hfacw(i,
$j,k,bi,bj)/ubarxyh)
adubarxy = 0.d0
end do
end do
else
do j = sny+oly, 2-oly, -1
adubarxy = 0.d0
do i = snx+olx-1, 1-olx, -1
adubarxy = 0.d0
adubarxy = adubarxy-0.5*advcoriolisterm(i,j)*(fcorig(i,j,bi,
$bj)+fcorig(i+1,j,bi,bj))*recip_dyc(i,j,bi,bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
adufld(i+1,j-1) = adufld(i+1,j-1)+0.25*adubarxy*dyg(i+1,j-1,
$bi,bj)
adufld(i,j-1) = adufld(i,j-1)+0.25*adubarxy*dyg(i,j-1,bi,bj)
adufld(i+1,j) = adufld(i+1,j)+0.25*adubarxy*dyg(i+1,j,bi,bj)
adufld(i,j) = adufld(i,j)+0.25*adubarxy*dyg(i,j,bi,bj)
adubarxy = 0.d0
end do
end do
endif
if (usejamartwetpoints) then
do j = sny+oly-1, 1-oly, -1
advbarxy = 0.d0
do i = snx+olx, 2-olx, -1
advbarxy = 0.d0
advbarxy = advbarxy+0.5*aducoriolisterm(i,j)*(fcorig(i,j,bi,
$bj)+fcorig(i,j+1,bi,bj))*recip_dxc(i,j,bi,bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
vbarxyh = max(epsil,hfacs(i,j,k,bi,bj)+hfacs(i-1,j,k,bi,bj)+
$hfacs(i,j+1,k,bi,bj)+hfacs(i-1,j+1,k,bi,bj))
advfld(i-1,j+1) = advfld(i-1,j+1)+advbarxy*(dxg(i-1,j+1,bi,
$bj)*hfacs(i-1,j+1,k,bi,bj)/vbarxyh)
advfld(i,j+1) = advfld(i,j+1)+advbarxy*(dxg(i,j+1,bi,bj)*
$hfacs(i,j+1,k,bi,bj)/vbarxyh)
advfld(i-1,j) = advfld(i-1,j)+advbarxy*(dxg(i-1,j,bi,bj)*
$hfacs(i-1,j,k,bi,bj)/vbarxyh)
advfld(i,j) = advfld(i,j)+advbarxy*(dxg(i,j,bi,bj)*hfacs(i,
$j,k,bi,bj)/vbarxyh)
advbarxy = 0.d0
end do
end do
else
do j = sny+oly-1, 1-oly, -1
advbarxy = 0.d0
do i = snx+olx, 2-olx, -1
advbarxy = 0.d0
advbarxy = advbarxy+0.5*aducoriolisterm(i,j)*(fcorig(i,j,bi,
$bj)+fcorig(i,j+1,bi,bj))*recip_dxc(i,j,bi,bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
advfld(i-1,j+1) = advfld(i-1,j+1)+0.25*advbarxy*dxg(i-1,j+1,
$bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.25*advbarxy*dxg(i,j+1,bi,bj)
advfld(i-1,j) = advfld(i-1,j)+0.25*advbarxy*dxg(i-1,j,bi,bj)
advfld(i,j) = advfld(i,j)+0.25*advbarxy*dxg(i,j,bi,bj)
advbarxy = 0.d0
end do
end do
endif
end
subroutine admom_vi_del2uv( bi, bj, k, adhdiv, advort3, hfacz,
$addel2u, addel2v )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addel2u(1-olx:snx+olx,1-oly:sny+oly)
double precision addel2v(1-olx:snx+olx,1-oly:sny+oly)
double precision adhdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
adhdiv(i,j-1) = adhdiv(i,j-1)-addel2v(i,j)*recip_dyc(i,j,bi,
$bj)
adhdiv(i,j) = adhdiv(i,j)+addel2v(i,j)*recip_dyc(i,j,bi,bj)
advort3(i+1,j) = advort3(i+1,j)+addel2v(i,j)*recip_hfacs(i,j,
$k,bi,bj)*hfacz(i+1,j)*recip_dxg(i,j,bi,bj)
advort3(i,j) = advort3(i,j)-addel2v(i,j)*recip_hfacs(i,j,k,bi,
$bj)*hfacz(i,j)*recip_dxg(i,j,bi,bj)
addel2v(i,j) = 0.d0
end do
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 2, .false. ,adhdiv )
endif
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
adhdiv(i-1,j) = adhdiv(i-1,j)-addel2u(i,j)*recip_dxc(i,j,bi,
$bj)
adhdiv(i,j) = adhdiv(i,j)+addel2u(i,j)*recip_dxc(i,j,bi,bj)
advort3(i,j+1) = advort3(i,j+1)-addel2u(i,j)*recip_hfacw(i,j,
$k,bi,bj)*hfacz(i,j+1)*recip_dyg(i,j,bi,bj)
advort3(i,j) = advort3(i,j)+addel2u(i,j)*recip_hfacw(i,j,k,bi,
$bj)*hfacz(i,j)*recip_dyg(i,j,bi,bj)
addel2u(i,j) = 0.d0
end do
end do
if (usecubedsphereexchange) then
call adfill_cs_corner_tr_rl( 1, .false. ,adhdiv )
endif
end
subroutine admom_vi_hdissip( bi, bj, k, hdiv, adhdiv, vort3,
$advort3, hfacz, dstar, addstar, zstar, adzstar, viscah_z,
$adviscah_z, viscah_d, adviscah_d, visca4_z, advisca4_z, visca4_d,
$advisca4_d, harmonic, biharmonic, usevariableviscosity, adudissip,
$ advdissip )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision addstar(1-olx:snx+olx,1-oly:sny+oly)
double precision adhdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision adudissip(1-olx:snx+olx,1-oly:sny+oly)
double precision advdissip(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision advisca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision adviscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3(1-olx:snx+olx,1-oly:sny+oly)
double precision adzstar(1-olx:snx+olx,1-oly:sny+oly)
integer bi
logical biharmonic
integer bj
double precision dstar(1-olx:snx+olx,1-oly:sny+oly)
logical harmonic
double precision hdiv(1-olx:snx+olx,1-oly:sny+oly)
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
logical usevariableviscosity
double precision visca4_d(1-olx:snx+olx,1-oly:sny+oly)
double precision visca4_z(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_d(1-olx:snx+olx,1-oly:sny+oly)
double precision viscah_z(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3(1-olx:snx+olx,1-oly:sny+oly)
double precision zstar(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision addij
double precision addim
double precision addmj
double precision adud2
double precision adud4
double precision advd2
double precision advd4
double precision adzij
double precision adzij1
double precision adzip
double precision adzip1
double precision adzpj
double precision adzpj1
double precision dij
double precision dim
double precision dmj
integer i
integer j
double precision zij1
double precision zip1
double precision zpj1
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
addij = 0.d0
addim = 0.d0
addmj = 0.d0
adud2 = 0.d0
adud4 = 0.d0
advd2 = 0.d0
advd4 = 0.d0
adzij = 0.d0
adzij1 = 0.d0
adzip = 0.d0
adzip1 = 0.d0
adzpj = 0.d0
adzpj1 = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (biharmonic) then
do j = sny+oly-1, 2-oly, -1
do i = snx+olx-1, 2-olx, -1
dim = dstar(i,j-1)
dij = dstar(i,j)
dmj = dstar(i-1,j)
zip1 = hfacz(i,j+1)*zstar(i,j+1)
zij1 = hfacz(i,j)*zstar(i,j)
zpj1 = hfacz(i+1,j)*zstar(i+1,j)
advd4 = advd4-advdissip(i,j)
adud4 = adud4-adudissip(i,j)
if (usevariableviscosity) then
addij = addij+advd4*recip_dyc(i,j,bi,bj)
addim = addim-advd4*recip_dyc(i,j,bi,bj)
adzij = adzij-advd4*recip_hfacs(i,j,k,bi,bj)*recip_dxg(i,
$j,bi,bj)*cosfacv(j,bi,bj)
adzpj = adzpj+advd4*recip_hfacs(i,j,k,bi,bj)*recip_dxg(i,
$j,bi,bj)*cosfacv(j,bi,bj)
advd4 = 0.d0
addij = addij+adud4*cosfacu(j,bi,bj)*recip_dxc(i,j,bi,bj)
addmj = addmj-adud4*cosfacu(j,bi,bj)*recip_dxc(i,j,bi,bj)
adzij = adzij+adud4*recip_hfacw(i,j,k,bi,bj)*recip_dyg(i,
$j,bi,bj)
adzip = adzip-adud4*recip_hfacw(i,j,k,bi,bj)*recip_dyg(i,
$j,bi,bj)
adud4 = 0.d0
advisca4_z(i+1,j) = advisca4_z(i+1,j)+adzpj*zpj1
adzpj1 = adzpj1+adzpj*visca4_z(i+1,j)
adzpj = 0.d0
advisca4_z(i,j+1) = advisca4_z(i,j+1)+adzip*zip1
adzip1 = adzip1+adzip*visca4_z(i,j+1)
adzip = 0.d0
advisca4_z(i,j) = advisca4_z(i,j)+adzij*zij1
adzij1 = adzij1+adzij*visca4_z(i,j)
adzij = 0.d0
advisca4_d(i-1,j) = advisca4_d(i-1,j)+addmj*dmj
addmj = addmj*visca4_d(i-1,j)
advisca4_d(i,j-1) = advisca4_d(i,j-1)+addim*dim
addim = addim*visca4_d(i,j-1)
advisca4_d(i,j) = advisca4_d(i,j)+addij*dij
addij = addij*visca4_d(i,j)
else
addij = addij+advd4*visca4d*recip_dyc(i,j,bi,bj)
addim = addim-advd4*visca4d*recip_dyc(i,j,bi,bj)
adzij = adzij-advd4*visca4z*recip_hfacs(i,j,k,bi,bj)*
$cosfacv(j,bi,bj)*recip_dxg(i,j,bi,bj)
adzpj = adzpj+advd4*visca4z*recip_hfacs(i,j,k,bi,bj)*
$cosfacv(j,bi,bj)*recip_dxg(i,j,bi,bj)
advd4 = 0.d0
addij = addij+adud4*visca4d*cosfacu(j,bi,bj)*recip_dxc(i,
$j,bi,bj)
addmj = addmj-adud4*visca4d*cosfacu(j,bi,bj)*recip_dxc(i,
$j,bi,bj)
adzij = adzij+adud4*visca4z*recip_hfacw(i,j,k,bi,bj)*
$recip_dyg(i,j,bi,bj)
adzip = adzip-adud4*visca4z*recip_hfacw(i,j,k,bi,bj)*
$recip_dyg(i,j,bi,bj)
adud4 = 0.d0
adzpj1 = adzpj1+adzpj
adzpj = 0.d0
adzip1 = adzip1+adzip
adzip = 0.d0
adzij1 = adzij1+adzij
adzij = 0.d0
endif
adzstar(i+1,j) = adzstar(i+1,j)+adzpj1*hfacz(i+1,j)
adzpj1 = 0.d0
adzstar(i,j) = adzstar(i,j)+adzij1*hfacz(i,j)
adzij1 = 0.d0
adzstar(i,j+1) = adzstar(i,j+1)+adzip1*hfacz(i,j+1)
adzip1 = 0.d0
addstar(i-1,j) = addstar(i-1,j)+addmj
addmj = 0.d0
addstar(i,j) = addstar(i,j)+addij
addij = 0.d0
addstar(i,j-1) = addstar(i,j-1)+addim
addim = 0.d0
end do
end do
endif
if (harmonic) then
do j = sny+oly-1, 2-oly, -1
do i = snx+olx-1, 2-olx, -1
advd2 = advd2+advdissip(i,j)
advdissip(i,j) = 0.d0
adud2 = adud2+adudissip(i,j)
adudissip(i,j) = 0.d0
if (usevariableviscosity) then
addij = addij+advd2*recip_dyc(i,j,bi,bj)
addim = addim-advd2*recip_dyc(i,j,bi,bj)
adzij = adzij-advd2*recip_hfacs(i,j,k,bi,bj)*recip_dxg(i,
$j,bi,bj)*cosfacv(j,bi,bj)
adzpj = adzpj+advd2*recip_hfacs(i,j,k,bi,bj)*recip_dxg(i,
$j,bi,bj)*cosfacv(j,bi,bj)
advd2 = 0.d0
addij = addij+adud2*cosfacu(j,bi,bj)*recip_dxc(i,j,bi,bj)
addmj = addmj-adud2*cosfacu(j,bi,bj)*recip_dxc(i,j,bi,bj)
adzij = adzij+adud2*recip_hfacw(i,j,k,bi,bj)*recip_dyg(i,
$j,bi,bj)
adzip = adzip-adud2*recip_hfacw(i,j,k,bi,bj)*recip_dyg(i,
$j,bi,bj)
adud2 = 0.d0
adviscah_z(i+1,j) = adviscah_z(i+1,j)+adzpj*hfacz(i+1,j)*
$vort3(i+1,j)
advort3(i+1,j) = advort3(i+1,j)+adzpj*hfacz(i+1,j)*
$viscah_z(i+1,j)
adzpj = 0.d0
adviscah_z(i,j+1) = adviscah_z(i,j+1)+adzip*hfacz(i,j+1)*
$vort3(i,j+1)
advort3(i,j+1) = advort3(i,j+1)+adzip*hfacz(i,j+1)*
$viscah_z(i,j+1)
adzip = 0.d0
adviscah_z(i,j) = adviscah_z(i,j)+adzij*hfacz(i,j)*vort3(
$i,j)
advort3(i,j) = advort3(i,j)+adzij*hfacz(i,j)*viscah_z(i,j)
adzij = 0.d0
adhdiv(i-1,j) = adhdiv(i-1,j)+addmj*viscah_d(i-1,j)
adviscah_d(i-1,j) = adviscah_d(i-1,j)+addmj*hdiv(i-1,j)
addmj = 0.d0
adhdiv(i,j-1) = adhdiv(i,j-1)+addim*viscah_d(i,j-1)
adviscah_d(i,j-1) = adviscah_d(i,j-1)+addim*hdiv(i,j-1)
addim = 0.d0
adhdiv(i,j) = adhdiv(i,j)+addij*viscah_d(i,j)
adviscah_d(i,j) = adviscah_d(i,j)+addij*hdiv(i,j)
addij = 0.d0
else
addij = addij+advd2*viscahd*recip_dyc(i,j,bi,bj)
addim = addim-advd2*viscahd*recip_dyc(i,j,bi,bj)
adzij = adzij-advd2*viscahz*recip_hfacs(i,j,k,bi,bj)*
$cosfacv(j,bi,bj)*recip_dxg(i,j,bi,bj)
adzpj = adzpj+advd2*viscahz*recip_hfacs(i,j,k,bi,bj)*
$cosfacv(j,bi,bj)*recip_dxg(i,j,bi,bj)
advd2 = 0.d0
addij = addij+adud2*viscahd*cosfacu(j,bi,bj)*recip_dxc(i,
$j,bi,bj)
addmj = addmj-adud2*viscahd*cosfacu(j,bi,bj)*recip_dxc(i,
$j,bi,bj)
adzij = adzij+adud2*viscahz*recip_hfacw(i,j,k,bi,bj)*
$recip_dyg(i,j,bi,bj)
adzip = adzip-adud2*viscahz*recip_hfacw(i,j,k,bi,bj)*
$recip_dyg(i,j,bi,bj)
adud2 = 0.d0
advort3(i+1,j) = advort3(i+1,j)+adzpj*hfacz(i+1,j)
adzpj = 0.d0
advort3(i,j) = advort3(i,j)+adzij*hfacz(i,j)
adzij = 0.d0
advort3(i,j+1) = advort3(i,j+1)+adzip*hfacz(i,j+1)
adzip = 0.d0
adhdiv(i-1,j) = adhdiv(i-1,j)+addmj
addmj = 0.d0
adhdiv(i,j) = adhdiv(i,j)+addij
addij = 0.d0
adhdiv(i,j-1) = adhdiv(i,j-1)+addim
addim = 0.d0
endif
end do
end do
else
do j = 2-oly, sny+oly-1
do i = 2-olx, snx+olx-1
advdissip(i,j) = 0.d0
adudissip(i,j) = 0.d0
end do
end do
endif
end
subroutine admom_vi_u_coriolis( bi, bj, k, vfld, advfld, omega3,
$adomega3, hfacz, r_hfacz, aducoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
logical upwindvort3
parameter ( upwindvort3 = .false. )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision adomega3(1-olx:snx+olx,1-oly:sny+oly)
double precision aducoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision omega3(1-olx:snx+olx,1-oly:sny+oly)
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision advbarxm
double precision advbarxp
double precision advbarxy
double precision advort3ij
double precision advort3ip
double precision advort3mj
double precision advort3mp
double precision advort3u
double precision epsil
integer i
integer j
double precision onethird
double precision vbarxm
double precision vbarxp
double precision vbarxy
double precision vbarxyh
double precision vort3u
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
advbarxm = 0.d0
advbarxp = 0.d0
advbarxy = 0.d0
advort3ij = 0.d0
advort3ip = 0.d0
advort3mj = 0.d0
advort3mp = 0.d0
advort3u = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
epsil = 1.d-9
onethird = 1.d0/3.d0
if (usejamartmomadv) then
do j = 1-oly, sny+oly-1
do i = 2-olx, snx+olx-1
aducoriolisterm(i,j) = aducoriolisterm(i,j)*(4*hfacw(i,j,k,
$bi,bj)/max(epsil,hfacs(i,j,k,bi,bj)+hfacs(i-1,j,k,bi,bj)+hfacs(i,
$j+1,k,bi,bj)+hfacs(i-1,j+1,k,bi,bj)))
end do
end do
endif
if (selectvortscheme .eq. 0) then
do j = sny+oly-1, 1-oly, -1
do i = snx+olx, 2-olx, -1
vbarxy = 0.25*(vfld(i,j)*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)+
$vfld(i-1,j)*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj)+vfld(i,j+1)*dxg(
$i,j+1,bi,bj)*hfacs(i,j+1,k,bi,bj)+vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)
$*hfacs(i-1,j+1,k,bi,bj))
if (upwindvort3) then
if (vbarxy .gt. 0.) then
vort3u = omega3(i,j)*r_hfacz(i,j)
else
vort3u = omega3(i,j+1)*r_hfacz(i,j+1)
endif
else
vort3u = 0.5*(omega3(i,j)*r_hfacz(i,j)+omega3(i,j+1)*
$r_hfacz(i,j+1))
endif
advbarxy = advbarxy+aducoriolisterm(i,j)*vort3u*recip_dxc(i,
$j,bi,bj)*maskw(i,j,k,bi,bj)
advort3u = advort3u+aducoriolisterm(i,j)*vbarxy*recip_dxc(i,
$j,bi,bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
if (upwindvort3) then
if (vbarxy .gt. 0.) then
adomega3(i,j) = adomega3(i,j)+advort3u*r_hfacz(i,j)
advort3u = 0.d0
else
adomega3(i,j+1) = adomega3(i,j+1)+advort3u*r_hfacz(i,j+
$1)
advort3u = 0.d0
endif
else
adomega3(i,j+1) = adomega3(i,j+1)+0.5*advort3u*r_hfacz(i,
$j+1)
adomega3(i,j) = adomega3(i,j)+0.5*advort3u*r_hfacz(i,j)
advort3u = 0.d0
endif
advfld(i-1,j+1) = advfld(i-1,j+1)+0.25*advbarxy*dxg(i-1,j+1,
$bi,bj)*hfacs(i-1,j+1,k,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.25*advbarxy*dxg(i,j+1,bi,bj)
$*hfacs(i,j+1,k,bi,bj)
advfld(i-1,j) = advfld(i-1,j)+0.25*advbarxy*dxg(i-1,j,bi,bj)
$*hfacs(i-1,j,k,bi,bj)
advfld(i,j) = advfld(i,j)+0.25*advbarxy*dxg(i,j,bi,bj)*
$hfacs(i,j,k,bi,bj)
advbarxy = 0.d0
end do
end do
else if (selectvortscheme .eq. 1) then
do j = sny+oly-1, 1-oly, -1
do i = snx+olx, 2-olx, -1
vbarxy = 0.5*(vfld(i,j)*dxg(i,j,bi,bj)*hfacz(i,j)+vfld(i-1,
$j)*dxg(i-1,j,bi,bj)*hfacz(i,j)+vfld(i,j+1)*dxg(i,j+1,bi,bj)*hfacz(
$i,j+1)+vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)*hfacz(i,j+1))/max(epsil,
$hfacz(i,j)+hfacz(i,j+1))
if (upwindvort3) then
if (vbarxy .gt. 0.) then
vort3u = omega3(i,j)
else
vort3u = omega3(i,j+1)
endif
else
vort3u = 0.5*(omega3(i,j)+omega3(i,j+1))
endif
advbarxy = advbarxy+aducoriolisterm(i,j)*vort3u*recip_dxc(i,
$j,bi,bj)*maskw(i,j,k,bi,bj)
advort3u = advort3u+aducoriolisterm(i,j)*vbarxy*recip_dxc(i,
$j,bi,bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
if (upwindvort3) then
if (vbarxy .gt. 0.) then
adomega3(i,j) = adomega3(i,j)+advort3u
advort3u = 0.d0
else
adomega3(i,j+1) = adomega3(i,j+1)+advort3u
advort3u = 0.d0
endif
else
adomega3(i,j+1) = adomega3(i,j+1)+0.5*advort3u
adomega3(i,j) = adomega3(i,j)+0.5*advort3u
advort3u = 0.d0
endif
vbarxyh = max(epsil,hfacz(i,j)+hfacz(i,j+1))
advfld(i-1,j+1) = advfld(i-1,j+1)+advbarxy*(0.5*dxg(i-1,j+1,
$bi,bj)*hfacz(i,j+1)/vbarxyh)
advfld(i,j+1) = advfld(i,j+1)+advbarxy*(0.5*dxg(i,j+1,bi,bj)
$*hfacz(i,j+1)/vbarxyh)
advfld(i-1,j) = advfld(i-1,j)+advbarxy*(0.5*dxg(i-1,j,bi,bj)
$*hfacz(i,j)/vbarxyh)
advfld(i,j) = advfld(i,j)+advbarxy*(0.5*dxg(i,j,bi,bj)*
$hfacz(i,j)/vbarxyh)
advbarxy = 0.d0
end do
end do
else if (selectvortscheme .eq. 2) then
do j = sny+oly-1, 1-oly, -1
do i = snx+olx, 2-olx, -1
vbarxm = 0.5*(vfld(i,j)*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)+
$vfld(i-1,j)*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj))
vbarxp = 0.5*(vfld(i,j+1)*dxg(i,j+1,bi,bj)*hfacs(i,j+1,k,bi,
$bj)+vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)*hfacs(i-1,j+1,k,bi,bj))
advort3u = advort3u+aducoriolisterm(i,j)*recip_dxc(i,j,bi,
$bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
if (upwindvort3) then
if (vbarxm+vbarxp .gt. 0.) then
adomega3(i,j) = adomega3(i,j)+advort3u*vbarxm*r_hfacz(i,
$j)
advbarxm = advbarxm+advort3u*r_hfacz(i,j)*omega3(i,j)
advort3u = 0.d0
else
adomega3(i,j+1) = adomega3(i,j+1)+advort3u*vbarxp*
$r_hfacz(i,j+1)
advbarxp = advbarxp+advort3u*r_hfacz(i,j+1)*omega3(i,j+
$1)
advort3u = 0.d0
endif
else
adomega3(i,j+1) = adomega3(i,j+1)+0.5d0*advort3u*vbarxp*
$r_hfacz(i,j+1)
adomega3(i,j) = adomega3(i,j)+0.5d0*advort3u*vbarxm*
$r_hfacz(i,j)
advbarxm = advbarxm+0.5d0*advort3u*r_hfacz(i,j)*omega3(i,
$j)
advbarxp = advbarxp+0.5d0*advort3u*r_hfacz(i,j+1)*omega3(
$i,j+1)
advort3u = 0.d0
endif
advfld(i-1,j+1) = advfld(i-1,j+1)+0.5*advbarxp*dxg(i-1,j+1,
$bi,bj)*hfacs(i-1,j+1,k,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.5*advbarxp*dxg(i,j+1,bi,bj)*
$hfacs(i,j+1,k,bi,bj)
advbarxp = 0.d0
advfld(i-1,j) = advfld(i-1,j)+0.5*advbarxm*dxg(i-1,j,bi,bj)*
$hfacs(i-1,j,k,bi,bj)
advfld(i,j) = advfld(i,j)+0.5*advbarxm*dxg(i,j,bi,bj)*hfacs(
$i,j,k,bi,bj)
advbarxm = 0.d0
end do
end do
else if (selectvortscheme .eq. 3) then
do j = sny+oly-1, 1-oly, -1
advort3ij = 0.d0
advort3ip = 0.d0
advort3mj = 0.d0
advort3mp = 0.d0
do i = snx+olx-1, 2-olx, -1
advort3ij = 0.d0
advort3ip = 0.d0
advort3mj = 0.d0
advort3mp = 0.d0
advort3ij = advort3ij+0.25d0*aducoriolisterm(i,j)*recip_dxc(
$i,j,bi,bj)*maskw(i,j,k,bi,bj)
advort3ip = advort3ip+0.25d0*aducoriolisterm(i,j)*recip_dxc(
$i,j,bi,bj)*maskw(i,j,k,bi,bj)
advort3mj = advort3mj+0.25d0*aducoriolisterm(i,j)*recip_dxc(
$i,j,bi,bj)*maskw(i,j,k,bi,bj)
advort3mp = advort3mp+0.25d0*aducoriolisterm(i,j)*recip_dxc(
$i,j,bi,bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
adomega3(i+1,j+1) = adomega3(i+1,j+1)+advort3ip*r_hfacz(i+1,
$j+1)*onethird*vfld(i,j+1)*dxg(i,j+1,bi,bj)*hfacs(i,j+1,k,bi,bj)
adomega3(i,j+1) = adomega3(i,j+1)+advort3ip*r_hfacz(i,j+1)*
$onethird*vfld(i,j+1)*dxg(i,j+1,bi,bj)*hfacs(i,j+1,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3ip*r_hfacz(i,j)*
$onethird*vfld(i,j+1)*dxg(i,j+1,bi,bj)*hfacs(i,j+1,k,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+advort3ip*(r_hfacz(i,j+1)*
$omega3(i,j+1)+r_hfacz(i,j)*omega3(i,j)+r_hfacz(i+1,j+1)*omega3(i+
$1,j+1))*onethird*dxg(i,j+1,bi,bj)*hfacs(i,j+1,k,bi,bj)
advort3ip = 0.d0
adomega3(i-1,j+1) = adomega3(i-1,j+1)+advort3mp*r_hfacz(i-1,
$j+1)*onethird*vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)*hfacs(i-1,j+1,k,bi,
$bj)
adomega3(i,j+1) = adomega3(i,j+1)+advort3mp*r_hfacz(i,j+1)*
$onethird*vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)*hfacs(i-1,j+1,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3mp*r_hfacz(i,j)*
$onethird*vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)*hfacs(i-1,j+1,k,bi,bj)
advfld(i-1,j+1) = advfld(i-1,j+1)+advort3mp*(r_hfacz(i,j+1)*
$omega3(i,j+1)+r_hfacz(i,j)*omega3(i,j)+r_hfacz(i-1,j+1)*omega3(i-
$1,j+1))*onethird*dxg(i-1,j+1,bi,bj)*hfacs(i-1,j+1,k,bi,bj)
advort3mp = 0.d0
adomega3(i,j+1) = adomega3(i,j+1)+advort3ij*r_hfacz(i,j+1)*
$onethird*vfld(i,j)*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)
adomega3(i+1,j) = adomega3(i+1,j)+advort3ij*r_hfacz(i+1,j)*
$onethird*vfld(i,j)*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3ij*r_hfacz(i,j)*
$onethird*vfld(i,j)*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)
advfld(i,j) = advfld(i,j)+advort3ij*(r_hfacz(i,j)*omega3(i,
$j)+r_hfacz(i,j+1)*omega3(i,j+1)+r_hfacz(i+1,j)*omega3(i+1,j))*
$onethird*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)
advort3ij = 0.d0
adomega3(i,j+1) = adomega3(i,j+1)+advort3mj*r_hfacz(i,j+1)*
$onethird*vfld(i-1,j)*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj)
adomega3(i-1,j) = adomega3(i-1,j)+advort3mj*r_hfacz(i-1,j)*
$onethird*vfld(i-1,j)*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3mj*r_hfacz(i,j)*
$onethird*vfld(i-1,j)*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj)
advfld(i-1,j) = advfld(i-1,j)+advort3mj*(r_hfacz(i,j)*
$omega3(i,j)+r_hfacz(i,j+1)*omega3(i,j+1)+r_hfacz(i-1,j)*omega3(i-
$1,j))*onethird*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj)
advort3mj = 0.d0
end do
end do
endif
end
subroutine admom_vi_u_coriolis_c4( bi, bj, k, vfld, advfld,
$omega3, adomega3, r_hfacz, aducoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
logical fourthvort3
parameter ( fourthvort3 = .true. )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
double precision onetwelve
parameter ( onetwelve = 1.d0/12.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision adomega3(1-olx:snx+olx,1-oly:sny+oly)
double precision aducoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision omega3(1-olx:snx+olx,1-oly:sny+oly)
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adrjm
double precision adrjp
double precision advbarxm
double precision advbarxp
double precision advbarxy
double precision advort3r(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3u
integer i
integer ip1
integer ip2
integer j
logical northeastcorner
logical northwestcorner
double precision rjm
double precision rjp
logical southeastcorner
logical southwestcorner
double precision vbarxm
double precision vbarxp
double precision vbarxy
double precision vort3r(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3u
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrjm = 0.d0
adrjp = 0.d0
advbarxm = 0.d0
advbarxp = 0.d0
advbarxy = 0.d0
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advort3r(ip1,ip2) = 0.d0
end do
end do
advort3u = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
vort3r(i,j) = r_hfacz(i,j)*omega3(i,j)
end do
end do
if (usecubedsphereexchange .and. highordervorticity) then
southwestcorner = .true.
southeastcorner = .true.
northwestcorner = .true.
northeastcorner = .true.
if (southwestcorner) then
i = 1
j = 1
vort3r(i,j-1) = (vort3r(i,j-1)+vort3r(i+1,j))*0.5d0
endif
if (southeastcorner) then
i = snx+1
j = 1
vort3r(i,j-1) = (vort3r(i,j-1)+vort3r(i-1,j))*0.5d0
endif
if (northwestcorner) then
i = 1
j = sny+1
vort3r(i,j+1) = (vort3r(i,j+1)+vort3r(i+1,j))*0.5d0
endif
if (northeastcorner) then
i = snx+1
j = sny+1
vort3r(i,j+1) = (vort3r(i,j+1)+vort3r(i-1,j))*0.5d0
endif
endif
if (selectvortscheme .eq. 0) then
do j = sny, 1, -1
do i = snx+1, 1, -1
vbarxy = 0.25*(vfld(i,j)*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)+
$vfld(i-1,j)*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj)+vfld(i,j+1)*dxg(
$i,j+1,bi,bj)*hfacs(i,j+1,k,bi,bj)+vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)
$*hfacs(i-1,j+1,k,bi,bj))
if (upwindvorticity) then
if (vbarxy .gt. 0.) then
vort3u = vort3r(i,j)
else
vort3u = vort3r(i,j+1)
endif
else if (fourthvort3) then
rjp = vort3r(i,j+2)-vort3r(i,j+1)
rjm = vort3r(i,j)-vort3r(i,j-1)
vort3u = 0.5*(vort3r(i,j)+vort3r(i,j+1)-onetwelve*(rjp-
$rjm))
else
vort3u = 0.5*(vort3r(i,j)+vort3r(i,j+1))
endif
advbarxy = advbarxy+aducoriolisterm(i,j)*vort3u*recip_dxc(i,
$j,bi,bj)*maskw(i,j,k,bi,bj)
advort3u = advort3u+aducoriolisterm(i,j)*vbarxy*recip_dxc(i,
$j,bi,bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
if (upwindvorticity) then
if (vbarxy .gt. 0.) then
advort3r(i,j) = advort3r(i,j)+advort3u
advort3u = 0.d0
else
advort3r(i,j+1) = advort3r(i,j+1)+advort3u
advort3u = 0.d0
endif
else if (fourthvort3) then
adrjm = adrjm+0.5*advort3u*onetwelve
adrjp = adrjp-0.5*advort3u*onetwelve
advort3r(i,j+1) = advort3r(i,j+1)+0.5*advort3u
advort3r(i,j) = advort3r(i,j)+0.5*advort3u
advort3u = 0.d0
advort3r(i,j-1) = advort3r(i,j-1)-adrjm
advort3r(i,j) = advort3r(i,j)+adrjm
adrjm = 0.d0
advort3r(i,j+2) = advort3r(i,j+2)+adrjp
advort3r(i,j+1) = advort3r(i,j+1)-adrjp
adrjp = 0.d0
else
advort3r(i,j+1) = advort3r(i,j+1)+0.5*advort3u
advort3r(i,j) = advort3r(i,j)+0.5*advort3u
advort3u = 0.d0
endif
advfld(i-1,j+1) = advfld(i-1,j+1)+0.25*advbarxy*dxg(i-1,j+1,
$bi,bj)*hfacs(i-1,j+1,k,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.25*advbarxy*dxg(i,j+1,bi,bj)
$*hfacs(i,j+1,k,bi,bj)
advfld(i-1,j) = advfld(i-1,j)+0.25*advbarxy*dxg(i-1,j,bi,bj)
$*hfacs(i-1,j,k,bi,bj)
advfld(i,j) = advfld(i,j)+0.25*advbarxy*dxg(i,j,bi,bj)*
$hfacs(i,j,k,bi,bj)
advbarxy = 0.d0
end do
end do
else if (selectvortscheme .eq. 2) then
do j = sny, 1, -1
do i = snx+1, 1, -1
vbarxm = 0.5*(vfld(i,j)*dxg(i,j,bi,bj)*hfacs(i,j,k,bi,bj)+
$vfld(i-1,j)*dxg(i-1,j,bi,bj)*hfacs(i-1,j,k,bi,bj))
vbarxp = 0.5*(vfld(i,j+1)*dxg(i,j+1,bi,bj)*hfacs(i,j+1,k,bi,
$bj)+vfld(i-1,j+1)*dxg(i-1,j+1,bi,bj)*hfacs(i-1,j+1,k,bi,bj))
advort3u = advort3u+aducoriolisterm(i,j)*recip_dxc(i,j,bi,
$bj)*maskw(i,j,k,bi,bj)
aducoriolisterm(i,j) = 0.d0
if (upwindvorticity) then
if (vbarxm+vbarxp .gt. 0.) then
advbarxm = advbarxm+advort3u*vort3r(i,j)
advort3r(i,j) = advort3r(i,j)+advort3u*vbarxm
advort3u = 0.d0
else
advbarxp = advbarxp+advort3u*vort3r(i,j+1)
advort3r(i,j+1) = advort3r(i,j+1)+advort3u*vbarxp
advort3u = 0.d0
endif
else if (fourthvort3) then
rjp = vort3r(i,j+1)-onesixth*(vort3r(i,j+2)-vort3r(i,j))
rjm = vort3r(i,j)+onesixth*(vort3r(i,j+1)-vort3r(i,j-1))
adrjm = adrjm+0.5*advort3u*vbarxm
adrjp = adrjp+0.5*advort3u*vbarxp
advbarxm = advbarxm+0.5*advort3u*rjm
advbarxp = advbarxp+0.5*advort3u*rjp
advort3u = 0.d0
advort3r(i,j-1) = advort3r(i,j-1)-adrjm*onesixth
advort3r(i,j+1) = advort3r(i,j+1)+adrjm*onesixth
advort3r(i,j) = advort3r(i,j)+adrjm
adrjm = 0.d0
advort3r(i,j+2) = advort3r(i,j+2)-adrjp*onesixth
advort3r(i,j+1) = advort3r(i,j+1)+adrjp
advort3r(i,j) = advort3r(i,j)+adrjp*onesixth
adrjp = 0.d0
else
advbarxm = advbarxm+0.5*advort3u*vort3r(i,j)
advbarxp = advbarxp+0.5*advort3u*vort3r(i,j+1)
advort3r(i,j+1) = advort3r(i,j+1)+0.5*advort3u*vbarxp
advort3r(i,j) = advort3r(i,j)+0.5*advort3u*vbarxm
advort3u = 0.d0
endif
advfld(i-1,j+1) = advfld(i-1,j+1)+0.5*advbarxp*dxg(i-1,j+1,
$bi,bj)*hfacs(i-1,j+1,k,bi,bj)
advfld(i,j+1) = advfld(i,j+1)+0.5*advbarxp*dxg(i,j+1,bi,bj)*
$hfacs(i,j+1,k,bi,bj)
advbarxp = 0.d0
advfld(i-1,j) = advfld(i-1,j)+0.5*advbarxm*dxg(i-1,j,bi,bj)*
$hfacs(i-1,j,k,bi,bj)
advfld(i,j) = advfld(i,j)+0.5*advbarxm*dxg(i,j,bi,bj)*hfacs(
$i,j,k,bi,bj)
advbarxm = 0.d0
end do
end do
endif
if (usecubedsphereexchange .and. highordervorticity) then
if (northeastcorner) then
advort3r(i-1,j) = advort3r(i-1,j)+0.5d0*advort3r(i,j+1)
advort3r(i,j+1) = 0.5d0*advort3r(i,j+1)
endif
if (northwestcorner) then
i = 1
j = sny+1
advort3r(i+1,j) = advort3r(i+1,j)+0.5d0*advort3r(i,j+1)
advort3r(i,j+1) = 0.5d0*advort3r(i,j+1)
endif
if (southeastcorner) then
i = snx+1
j = 1
advort3r(i-1,j) = advort3r(i-1,j)+0.5d0*advort3r(i,j-1)
advort3r(i,j-1) = 0.5d0*advort3r(i,j-1)
endif
if (southwestcorner) then
i = 1
j = 1
advort3r(i+1,j) = advort3r(i+1,j)+0.5d0*advort3r(i,j-1)
advort3r(i,j-1) = 0.5d0*advort3r(i,j-1)
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adomega3(i,j) = adomega3(i,j)+advort3r(i,j)*r_hfacz(i,j)
advort3r(i,j) = 0.d0
end do
end do
end
subroutine admom_vi_u_grad_ke( bi, bj, k, adke, addkedx )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addkedx(1-olx:snx+olx,1-oly:sny+oly)
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 2-olx, snx+olx
adke(i-1,j) = adke(i-1,j)+addkedx(i,j)*recip_dxc(i,j,bi,bj)*
$maskw(i,j,k,bi,bj)
adke(i,j) = adke(i,j)-addkedx(i,j)*recip_dxc(i,j,bi,bj)*maskw(
$i,j,k,bi,bj)
addkedx(i,j) = 0.d0
end do
end do
end
subroutine admom_vi_u_vertshear( bi, bj, k, ufld, adufld, wfld,
$adwfld, adushearterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision adufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adushearterm(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision ufld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
double precision adusheartermh
double precision adusheartermi
double precision aduzm
double precision aduzp
double precision adwbarxm
double precision adwbarxp
integer i
integer j
integer km1
integer kp1
double precision mask_km1
double precision mask_kp1
logical radvareaweight
double precision uzm
double precision uzp
double precision wbarxm
double precision wbarxp
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
aduzm = 0.d0
aduzp = 0.d0
adwbarxm = 0.d0
adwbarxp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
radvareaweight = .true.
if (selectkescheme .eq. 1 .or. selectkescheme .eq. 3) then
radvareaweight = .false.
endif
kp1 = min(k+1,nr)
mask_kp1 = 1.
if (k .eq. nr) then
mask_kp1 = 0.
endif
km1 = max(k-1,1)
mask_km1 = 1.
if (k .eq. 1) then
mask_km1 = 0.
endif
do j = sny+oly, 1-oly, -1
do i = snx+olx, 2-olx, -1
if (radvareaweight) then
wbarxm = 0.5*(wfld(i,j,k,bi,bj)*ra(i,j,bi,bj)*maskc(i,j,km1,
$bi,bj)+wfld(i-1,j,k,bi,bj)*ra(i-1,j,bi,bj)*maskc(i-1,j,km1,bi,bj))
$*mask_km1*recip_raw(i,j,bi,bj)
wbarxp = 0.5*(wfld(i,j,kp1,bi,bj)*ra(i,j,bi,bj)+wfld(i-1,j,
$kp1,bi,bj)*ra(i-1,j,bi,bj))*mask_kp1*recip_raw(i,j,bi,bj)
else
wbarxm = 0.5*(wfld(i,j,k,bi,bj)*maskc(i,j,km1,bi,bj)+wfld(i-
$1,j,k,bi,bj)*maskc(i-1,j,km1,bi,bj))*mask_km1
wbarxp = 0.5*(wfld(i,j,kp1,bi,bj)+wfld(i-1,j,kp1,bi,bj))*
$mask_kp1
endif
uzm = (ufld(i,j,k,bi,bj)-mask_km1*ufld(i,j,km1,bi,bj))*rksign
uzp = (mask_kp1*ufld(i,j,kp1,bi,bj)-ufld(i,j,k,bi,bj))*rksign
if (upwindshear) then
adusheartermh = 0.5*adushearterm(i,j)*uzm*recip_hfacw(i,j,k,
$bi,bj)*recip_drf(k)
adusheartermi = -(0.5*adushearterm(i,j)*uzp*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k))
aduzm = aduzm-0.5*adushearterm(i,j)*(wbarxm-abs(wbarxm))*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)
aduzp = aduzp-0.5*adushearterm(i,j)*(wbarxp+abs(wbarxp))*
$recip_hfacw(i,j,k,bi,bj)*recip_drf(k)
adwbarxm = adwbarxm-0.5*adushearterm(i,j)*uzm*recip_hfacw(i,
$j,k,bi,bj)*recip_drf(k)
adwbarxp = adwbarxp-0.5*adushearterm(i,j)*uzp*recip_hfacw(i,
$j,k,bi,bj)*recip_drf(k)
adwbarxp = adwbarxp+adusheartermi*sign(1.d0,wbarxp)
adwbarxm = adwbarxm+adusheartermh*sign(1.d0,wbarxm)
adushearterm(i,j) = 0.d0
else
aduzm = aduzm-0.5*adushearterm(i,j)*wbarxm*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)
aduzp = aduzp-0.5*adushearterm(i,j)*wbarxp*recip_hfacw(i,j,
$k,bi,bj)*recip_drf(k)
adwbarxm = adwbarxm-0.5*adushearterm(i,j)*uzm*recip_hfacw(i,
$j,k,bi,bj)*recip_drf(k)
adwbarxp = adwbarxp-0.5*adushearterm(i,j)*uzp*recip_hfacw(i,
$j,k,bi,bj)*recip_drf(k)
adushearterm(i,j) = 0.d0
endif
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)-aduzp*rksign
adufld(i,j,kp1,bi,bj) = adufld(i,j,kp1,bi,bj)+aduzp*mask_kp1*
$rksign
aduzp = 0.d0
adufld(i,j,k,bi,bj) = adufld(i,j,k,bi,bj)+aduzm*rksign
adufld(i,j,km1,bi,bj) = adufld(i,j,km1,bi,bj)-aduzm*mask_km1*
$rksign
aduzm = 0.d0
if (radvareaweight) then
adwfld(i-1,j,kp1,bi,bj) = adwfld(i-1,j,kp1,bi,bj)+0.5*
$adwbarxp*ra(i-1,j,bi,bj)*mask_kp1*recip_raw(i,j,bi,bj)
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)+0.5*adwbarxp*
$ra(i,j,bi,bj)*mask_kp1*recip_raw(i,j,bi,bj)
adwbarxp = 0.d0
adwfld(i-1,j,k,bi,bj) = adwfld(i-1,j,k,bi,bj)+0.5*adwbarxm*
$ra(i-1,j,bi,bj)*maskc(i-1,j,km1,bi,bj)*mask_km1*recip_raw(i,j,bi,
$bj)
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.5*adwbarxm*ra(i,
$j,bi,bj)*maskc(i,j,km1,bi,bj)*mask_km1*recip_raw(i,j,bi,bj)
adwbarxm = 0.d0
else
adwfld(i-1,j,kp1,bi,bj) = adwfld(i-1,j,kp1,bi,bj)+0.5*
$adwbarxp*mask_kp1
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)+0.5*adwbarxp*
$mask_kp1
adwbarxp = 0.d0
adwfld(i-1,j,k,bi,bj) = adwfld(i-1,j,k,bi,bj)+0.5*adwbarxm*
$maskc(i-1,j,km1,bi,bj)*mask_km1
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.5*adwbarxm*
$maskc(i,j,km1,bi,bj)*mask_km1
adwbarxm = 0.d0
endif
end do
end do
end
subroutine admom_vi_v_coriolis( bi, bj, k, ufld, adufld, omega3,
$adomega3, hfacz, r_hfacz, advcoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
logical upwindvort3
parameter ( upwindvort3 = .false. )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision adomega3(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advcoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
double precision hfacz(1-olx:snx+olx,1-oly:sny+oly)
integer k
double precision omega3(1-olx:snx+olx,1-oly:sny+oly)
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adubarxy
double precision adubarym
double precision adubaryp
double precision advort3ij
double precision advort3im
double precision advort3pj
double precision advort3pm
double precision advort3v
double precision epsil
integer i
integer j
double precision onethird
double precision ubarxy
double precision ubarxyh
double precision ubarym
double precision ubaryp
double precision vort3v
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adubarxy = 0.d0
adubarym = 0.d0
adubaryp = 0.d0
advort3ij = 0.d0
advort3im = 0.d0
advort3pj = 0.d0
advort3pm = 0.d0
advort3v = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
epsil = 1.d-9
onethird = 1.d0/3.d0
if (usejamartmomadv) then
do j = 2-oly, sny+oly-1
do i = 1-olx, snx+olx-1
advcoriolisterm(i,j) = advcoriolisterm(i,j)*(4*hfacs(i,j,k,
$bi,bj)/max(epsil,hfacw(i,j,k,bi,bj)+hfacw(i,j-1,k,bi,bj)+hfacw(i+
$1,j,k,bi,bj)+hfacw(i+1,j-1,k,bi,bj)))
end do
end do
endif
if (selectvortscheme .eq. 0) then
do j = sny+oly, 2-oly, -1
do i = snx+olx-1, 1-olx, -1
ubarxy = 0.25*(ufld(i,j)*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)+
$ufld(i,j-1)*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj)+ufld(i+1,j)*dyg(
$i+1,j,bi,bj)*hfacw(i+1,j,k,bi,bj)+ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)
$*hfacw(i+1,j-1,k,bi,bj))
if (upwindvort3) then
if (ubarxy .gt. 0.) then
vort3v = omega3(i,j)*r_hfacz(i,j)
else
vort3v = omega3(i+1,j)*r_hfacz(i+1,j)
endif
else
vort3v = 0.5*(omega3(i,j)*r_hfacz(i,j)+omega3(i+1,j)*
$r_hfacz(i+1,j))
endif
adubarxy = adubarxy-advcoriolisterm(i,j)*vort3v*recip_dyc(i,
$j,bi,bj)*masks(i,j,k,bi,bj)
advort3v = advort3v-advcoriolisterm(i,j)*ubarxy*recip_dyc(i,
$j,bi,bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
if (upwindvort3) then
if (ubarxy .gt. 0.) then
adomega3(i,j) = adomega3(i,j)+advort3v*r_hfacz(i,j)
advort3v = 0.d0
else
adomega3(i+1,j) = adomega3(i+1,j)+advort3v*r_hfacz(i+1,
$j)
advort3v = 0.d0
endif
else
adomega3(i+1,j) = adomega3(i+1,j)+0.5*advort3v*r_hfacz(i+
$1,j)
adomega3(i,j) = adomega3(i,j)+0.5*advort3v*r_hfacz(i,j)
advort3v = 0.d0
endif
adufld(i+1,j-1) = adufld(i+1,j-1)+0.25*adubarxy*dyg(i+1,j-1,
$bi,bj)*hfacw(i+1,j-1,k,bi,bj)
adufld(i,j-1) = adufld(i,j-1)+0.25*adubarxy*dyg(i,j-1,bi,bj)
$*hfacw(i,j-1,k,bi,bj)
adufld(i+1,j) = adufld(i+1,j)+0.25*adubarxy*dyg(i+1,j,bi,bj)
$*hfacw(i+1,j,k,bi,bj)
adufld(i,j) = adufld(i,j)+0.25*adubarxy*dyg(i,j,bi,bj)*
$hfacw(i,j,k,bi,bj)
adubarxy = 0.d0
end do
end do
else if (selectvortscheme .eq. 1) then
do j = sny+oly, 2-oly, -1
do i = snx+olx-1, 1-olx, -1
ubarxy = 0.5*(ufld(i,j)*dyg(i,j,bi,bj)*hfacz(i,j)+ufld(i,j-
$1)*dyg(i,j-1,bi,bj)*hfacz(i,j)+ufld(i+1,j)*dyg(i+1,j,bi,bj)*hfacz(
$i+1,j)+ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)*hfacz(i+1,j))/max(epsil,
$hfacz(i,j)+hfacz(i+1,j))
if (upwindvort3) then
if (ubarxy .gt. 0.) then
vort3v = omega3(i,j)
else
vort3v = omega3(i+1,j)
endif
else
vort3v = 0.5*(omega3(i,j)+omega3(i+1,j))
endif
adubarxy = adubarxy-advcoriolisterm(i,j)*vort3v*recip_dyc(i,
$j,bi,bj)*masks(i,j,k,bi,bj)
advort3v = advort3v-advcoriolisterm(i,j)*ubarxy*recip_dyc(i,
$j,bi,bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
if (upwindvort3) then
if (ubarxy .gt. 0.) then
adomega3(i,j) = adomega3(i,j)+advort3v
advort3v = 0.d0
else
adomega3(i+1,j) = adomega3(i+1,j)+advort3v
advort3v = 0.d0
endif
else
adomega3(i+1,j) = adomega3(i+1,j)+0.5*advort3v
adomega3(i,j) = adomega3(i,j)+0.5*advort3v
advort3v = 0.d0
endif
ubarxyh = max(epsil,hfacz(i,j)+hfacz(i+1,j))
adufld(i+1,j-1) = adufld(i+1,j-1)+adubarxy*(0.5*dyg(i+1,j-1,
$bi,bj)*hfacz(i+1,j)/ubarxyh)
adufld(i,j-1) = adufld(i,j-1)+adubarxy*(0.5*dyg(i,j-1,bi,bj)
$*hfacz(i,j)/ubarxyh)
adufld(i+1,j) = adufld(i+1,j)+adubarxy*(0.5*dyg(i+1,j,bi,bj)
$*hfacz(i+1,j)/ubarxyh)
adufld(i,j) = adufld(i,j)+adubarxy*(0.5*dyg(i,j,bi,bj)*
$hfacz(i,j)/ubarxyh)
adubarxy = 0.d0
end do
end do
else if (selectvortscheme .eq. 2) then
do j = sny+oly, 2-oly, -1
do i = snx+olx-1, 1-olx, -1
ubarym = 0.5*(ufld(i,j)*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)+
$ufld(i,j-1)*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj))
ubaryp = 0.5*(ufld(i+1,j)*dyg(i+1,j,bi,bj)*hfacw(i+1,j,k,bi,
$bj)+ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)*hfacw(i+1,j-1,k,bi,bj))
advort3v = advort3v-advcoriolisterm(i,j)*recip_dyc(i,j,bi,
$bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
if (upwindvort3) then
if (ubarym+ubaryp .gt. 0.) then
adomega3(i,j) = adomega3(i,j)+advort3v*ubarym*r_hfacz(i,
$j)
adubarym = adubarym+advort3v*r_hfacz(i,j)*omega3(i,j)
advort3v = 0.d0
else
adomega3(i+1,j) = adomega3(i+1,j)+advort3v*ubaryp*
$r_hfacz(i+1,j)
adubaryp = adubaryp+advort3v*r_hfacz(i+1,j)*omega3(i+1,
$j)
advort3v = 0.d0
endif
else
adomega3(i+1,j) = adomega3(i+1,j)+0.5d0*advort3v*ubaryp*
$r_hfacz(i+1,j)
adomega3(i,j) = adomega3(i,j)+0.5d0*advort3v*ubarym*
$r_hfacz(i,j)
adubarym = adubarym+0.5d0*advort3v*r_hfacz(i,j)*omega3(i,
$j)
adubaryp = adubaryp+0.5d0*advort3v*r_hfacz(i+1,j)*omega3(
$i+1,j)
advort3v = 0.d0
endif
adufld(i+1,j-1) = adufld(i+1,j-1)+0.5*adubaryp*dyg(i+1,j-1,
$bi,bj)*hfacw(i+1,j-1,k,bi,bj)
adufld(i+1,j) = adufld(i+1,j)+0.5*adubaryp*dyg(i+1,j,bi,bj)*
$hfacw(i+1,j,k,bi,bj)
adubaryp = 0.d0
adufld(i,j-1) = adufld(i,j-1)+0.5*adubarym*dyg(i,j-1,bi,bj)*
$hfacw(i,j-1,k,bi,bj)
adufld(i,j) = adufld(i,j)+0.5*adubarym*dyg(i,j,bi,bj)*hfacw(
$i,j,k,bi,bj)
adubarym = 0.d0
end do
end do
else if (selectvortscheme .eq. 3) then
do j = sny+oly-1, 2-oly, -1
advort3ij = 0.d0
advort3im = 0.d0
advort3pj = 0.d0
advort3pm = 0.d0
do i = snx+olx-1, 1-olx, -1
advort3ij = 0.d0
advort3im = 0.d0
advort3pj = 0.d0
advort3pm = 0.d0
advort3ij = advort3ij-0.25d0*advcoriolisterm(i,j)*recip_dyc(
$i,j,bi,bj)*masks(i,j,k,bi,bj)
advort3im = advort3im-0.25d0*advcoriolisterm(i,j)*recip_dyc(
$i,j,bi,bj)*masks(i,j,k,bi,bj)
advort3pj = advort3pj-0.25d0*advcoriolisterm(i,j)*recip_dyc(
$i,j,bi,bj)*masks(i,j,k,bi,bj)
advort3pm = advort3pm-0.25d0*advcoriolisterm(i,j)*recip_dyc(
$i,j,bi,bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
adomega3(i+1,j+1) = adomega3(i+1,j+1)+advort3pj*r_hfacz(i+1,
$j+1)*onethird*ufld(i+1,j)*dyg(i+1,j,bi,bj)*hfacw(i+1,j,k,bi,bj)
adomega3(i+1,j) = adomega3(i+1,j)+advort3pj*r_hfacz(i+1,j)*
$onethird*ufld(i+1,j)*dyg(i+1,j,bi,bj)*hfacw(i+1,j,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3pj*r_hfacz(i,j)*
$onethird*ufld(i+1,j)*dyg(i+1,j,bi,bj)*hfacw(i+1,j,k,bi,bj)
adufld(i+1,j) = adufld(i+1,j)+advort3pj*(r_hfacz(i+1,j)*
$omega3(i+1,j)+r_hfacz(i,j)*omega3(i,j)+r_hfacz(i+1,j+1)*omega3(i+
$1,j+1))*onethird*dyg(i+1,j,bi,bj)*hfacw(i+1,j,k,bi,bj)
advort3pj = 0.d0
adomega3(i+1,j-1) = adomega3(i+1,j-1)+advort3pm*r_hfacz(i+1,
$j-1)*onethird*ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)*hfacw(i+1,j-1,k,bi,
$bj)
adomega3(i+1,j) = adomega3(i+1,j)+advort3pm*r_hfacz(i+1,j)*
$onethird*ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)*hfacw(i+1,j-1,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3pm*r_hfacz(i,j)*
$onethird*ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)*hfacw(i+1,j-1,k,bi,bj)
adufld(i+1,j-1) = adufld(i+1,j-1)+advort3pm*(r_hfacz(i+1,j)*
$omega3(i+1,j)+r_hfacz(i,j)*omega3(i,j)+r_hfacz(i+1,j-1)*omega3(i+
$1,j-1))*onethird*dyg(i+1,j-1,bi,bj)*hfacw(i+1,j-1,k,bi,bj)
advort3pm = 0.d0
adomega3(i,j+1) = adomega3(i,j+1)+advort3ij*r_hfacz(i,j+1)*
$onethird*ufld(i,j)*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)
adomega3(i+1,j) = adomega3(i+1,j)+advort3ij*r_hfacz(i+1,j)*
$onethird*ufld(i,j)*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3ij*r_hfacz(i,j)*
$onethird*ufld(i,j)*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)
adufld(i,j) = adufld(i,j)+advort3ij*(r_hfacz(i,j)*omega3(i,
$j)+r_hfacz(i+1,j)*omega3(i+1,j)+r_hfacz(i,j+1)*omega3(i,j+1))*
$onethird*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)
advort3ij = 0.d0
adomega3(i,j-1) = adomega3(i,j-1)+advort3im*r_hfacz(i,j-1)*
$onethird*ufld(i,j-1)*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj)
adomega3(i+1,j) = adomega3(i+1,j)+advort3im*r_hfacz(i+1,j)*
$onethird*ufld(i,j-1)*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj)
adomega3(i,j) = adomega3(i,j)+advort3im*r_hfacz(i,j)*
$onethird*ufld(i,j-1)*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj)
adufld(i,j-1) = adufld(i,j-1)+advort3im*(r_hfacz(i,j)*
$omega3(i,j)+r_hfacz(i+1,j)*omega3(i+1,j)+r_hfacz(i,j-1)*omega3(i,
$j-1))*onethird*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj)
advort3im = 0.d0
end do
end do
endif
end
subroutine admom_vi_v_coriolis_c4( bi, bj, k, ufld, adufld,
$omega3, adomega3, r_hfacz, advcoriolisterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
logical fourthvort3
parameter ( fourthvort3 = .true. )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
double precision onesixth
parameter ( onesixth = 1.d0/6.d0 )
double precision onetwelve
parameter ( onetwelve = 1.d0/12.d0 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
logical eebooterror
logical eeenderror
logical fatalerror
logical printmapincludeszeros
logical usecoupler
logical usecubedsphereexchange
logical usenest_child
logical usenest_parent
logical useoasis
logical usesetrlstk
logical usesigreg
logical usesinglecpuio
common /eeparams_l/ eebooterror, fatalerror, eeenderror,
$usesinglecpuio, printmapincludeszeros, usecubedsphereexchange,
$usecoupler, usenest_parent, usenest_child, useoasis, usesetrlstk,
$usesigreg
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision adomega3(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision advcoriolisterm(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
double precision omega3(1-olx:snx+olx,1-oly:sny+oly)
double precision r_hfacz(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
C==============================================
C declare local variables
C==============================================
double precision adrjm
double precision adrjp
double precision adubarxy
double precision adubarym
double precision adubaryp
double precision advort3r(1-olx:snx+olx,1-oly:sny+oly)
double precision advort3v
integer i
integer ip1
integer ip2
integer j
logical northeastcorner
logical northwestcorner
double precision rjm
double precision rjp
logical southeastcorner
logical southwestcorner
double precision ubarxy
double precision ubarym
double precision ubaryp
double precision vort3r(1-olx:snx+olx,1-oly:sny+oly)
double precision vort3v
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
adrjm = 0.d0
adrjp = 0.d0
adubarxy = 0.d0
adubarym = 0.d0
adubaryp = 0.d0
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advort3r(ip1,ip2) = 0.d0
end do
end do
advort3v = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
vort3r(i,j) = r_hfacz(i,j)*omega3(i,j)
end do
end do
if (usecubedsphereexchange .and. highordervorticity) then
southwestcorner = .true.
southeastcorner = .true.
northwestcorner = .true.
northeastcorner = .true.
if (southwestcorner) then
i = 1
j = 1
vort3r(i-1,j) = (vort3r(i-1,j)+vort3r(i,j+1))*0.5d0
endif
if (southeastcorner) then
i = snx+1
j = 1
vort3r(i+1,j) = (vort3r(i+1,j)+vort3r(i,j+1))*0.5d0
endif
if (northwestcorner) then
i = 1
j = sny+1
vort3r(i-1,j) = (vort3r(i-1,j)+vort3r(i,j-1))*0.5d0
endif
if (northeastcorner) then
i = snx+1
j = sny+1
vort3r(i+1,j) = (vort3r(i+1,j)+vort3r(i,j-1))*0.5d0
endif
endif
if (selectvortscheme .eq. 0) then
do j = sny+1, 1, -1
do i = snx, 1, -1
ubarxy = 0.25*(ufld(i,j)*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)+
$ufld(i,j-1)*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj)+ufld(i+1,j)*dyg(
$i+1,j,bi,bj)*hfacw(i+1,j,k,bi,bj)+ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)
$*hfacw(i+1,j-1,k,bi,bj))
if (upwindvorticity) then
if (ubarxy .gt. 0.) then
vort3v = vort3r(i,j)
else
vort3v = vort3r(i+1,j)
endif
else if (fourthvort3) then
rjp = vort3r(i+2,j)-vort3r(i+1,j)
rjm = vort3r(i,j)-vort3r(i-1,j)
vort3v = 0.5*(vort3r(i,j)+vort3r(i+1,j)-onetwelve*(rjp-
$rjm))
else
vort3v = 0.5*(vort3r(i,j)+vort3r(i+1,j))
endif
adubarxy = adubarxy-advcoriolisterm(i,j)*vort3v*recip_dyc(i,
$j,bi,bj)*masks(i,j,k,bi,bj)
advort3v = advort3v-advcoriolisterm(i,j)*ubarxy*recip_dyc(i,
$j,bi,bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
if (upwindvorticity) then
if (ubarxy .gt. 0.) then
advort3r(i,j) = advort3r(i,j)+advort3v
advort3v = 0.d0
else
advort3r(i+1,j) = advort3r(i+1,j)+advort3v
advort3v = 0.d0
endif
else if (fourthvort3) then
adrjm = adrjm+0.5*advort3v*onetwelve
adrjp = adrjp-0.5*advort3v*onetwelve
advort3r(i+1,j) = advort3r(i+1,j)+0.5*advort3v
advort3r(i,j) = advort3r(i,j)+0.5*advort3v
advort3v = 0.d0
advort3r(i-1,j) = advort3r(i-1,j)-adrjm
advort3r(i,j) = advort3r(i,j)+adrjm
adrjm = 0.d0
advort3r(i+2,j) = advort3r(i+2,j)+adrjp
advort3r(i+1,j) = advort3r(i+1,j)-adrjp
adrjp = 0.d0
else
advort3r(i+1,j) = advort3r(i+1,j)+0.5*advort3v
advort3r(i,j) = advort3r(i,j)+0.5*advort3v
advort3v = 0.d0
endif
adufld(i+1,j-1) = adufld(i+1,j-1)+0.25*adubarxy*dyg(i+1,j-1,
$bi,bj)*hfacw(i+1,j-1,k,bi,bj)
adufld(i,j-1) = adufld(i,j-1)+0.25*adubarxy*dyg(i,j-1,bi,bj)
$*hfacw(i,j-1,k,bi,bj)
adufld(i+1,j) = adufld(i+1,j)+0.25*adubarxy*dyg(i+1,j,bi,bj)
$*hfacw(i+1,j,k,bi,bj)
adufld(i,j) = adufld(i,j)+0.25*adubarxy*dyg(i,j,bi,bj)*
$hfacw(i,j,k,bi,bj)
adubarxy = 0.d0
end do
end do
else if (selectvortscheme .eq. 2) then
do j = sny+1, 1, -1
do i = snx, 1, -1
ubarym = 0.5*(ufld(i,j)*dyg(i,j,bi,bj)*hfacw(i,j,k,bi,bj)+
$ufld(i,j-1)*dyg(i,j-1,bi,bj)*hfacw(i,j-1,k,bi,bj))
ubaryp = 0.5*(ufld(i+1,j)*dyg(i+1,j,bi,bj)*hfacw(i+1,j,k,bi,
$bj)+ufld(i+1,j-1)*dyg(i+1,j-1,bi,bj)*hfacw(i+1,j-1,k,bi,bj))
advort3v = advort3v-advcoriolisterm(i,j)*recip_dyc(i,j,bi,
$bj)*masks(i,j,k,bi,bj)
advcoriolisterm(i,j) = 0.d0
if (upwindvorticity) then
if (ubarym+ubaryp .gt. 0.) then
adubarym = adubarym+advort3v*vort3r(i,j)
advort3r(i,j) = advort3r(i,j)+advort3v*ubarym
advort3v = 0.d0
else
adubaryp = adubaryp+advort3v*vort3r(i+1,j)
advort3r(i+1,j) = advort3r(i+1,j)+advort3v*ubaryp
advort3v = 0.d0
endif
else if (fourthvort3) then
rjp = vort3r(i+1,j)-onesixth*(vort3r(i+2,j)-vort3r(i,j))
rjm = vort3r(i,j)+onesixth*(vort3r(i+1,j)-vort3r(i-1,j))
adrjm = adrjm+0.5*advort3v*ubarym
adrjp = adrjp+0.5*advort3v*ubaryp
adubarym = adubarym+0.5*advort3v*rjm
adubaryp = adubaryp+0.5*advort3v*rjp
advort3v = 0.d0
advort3r(i-1,j) = advort3r(i-1,j)-adrjm*onesixth
advort3r(i+1,j) = advort3r(i+1,j)+adrjm*onesixth
advort3r(i,j) = advort3r(i,j)+adrjm
adrjm = 0.d0
advort3r(i+2,j) = advort3r(i+2,j)-adrjp*onesixth
advort3r(i+1,j) = advort3r(i+1,j)+adrjp
advort3r(i,j) = advort3r(i,j)+adrjp*onesixth
adrjp = 0.d0
else
adubarym = adubarym+0.5*advort3v*vort3r(i,j)
adubaryp = adubaryp+0.5*advort3v*vort3r(i+1,j)
advort3r(i+1,j) = advort3r(i+1,j)+0.5*advort3v*ubaryp
advort3r(i,j) = advort3r(i,j)+0.5*advort3v*ubarym
advort3v = 0.d0
endif
adufld(i+1,j-1) = adufld(i+1,j-1)+0.5*adubaryp*dyg(i+1,j-1,
$bi,bj)*hfacw(i+1,j-1,k,bi,bj)
adufld(i+1,j) = adufld(i+1,j)+0.5*adubaryp*dyg(i+1,j,bi,bj)*
$hfacw(i+1,j,k,bi,bj)
adubaryp = 0.d0
adufld(i,j-1) = adufld(i,j-1)+0.5*adubarym*dyg(i,j-1,bi,bj)*
$hfacw(i,j-1,k,bi,bj)
adufld(i,j) = adufld(i,j)+0.5*adubarym*dyg(i,j,bi,bj)*hfacw(
$i,j,k,bi,bj)
adubarym = 0.d0
end do
end do
endif
if (usecubedsphereexchange .and. highordervorticity) then
if (northeastcorner) then
advort3r(i,j-1) = advort3r(i,j-1)+0.5d0*advort3r(i+1,j)
advort3r(i+1,j) = 0.5d0*advort3r(i+1,j)
endif
if (northwestcorner) then
i = 1
j = sny+1
advort3r(i,j-1) = advort3r(i,j-1)+0.5d0*advort3r(i-1,j)
advort3r(i-1,j) = 0.5d0*advort3r(i-1,j)
endif
if (southeastcorner) then
i = snx+1
j = 1
advort3r(i,j+1) = advort3r(i,j+1)+0.5d0*advort3r(i+1,j)
advort3r(i+1,j) = 0.5d0*advort3r(i+1,j)
endif
if (southwestcorner) then
i = 1
j = 1
advort3r(i,j+1) = advort3r(i,j+1)+0.5d0*advort3r(i-1,j)
advort3r(i-1,j) = 0.5d0*advort3r(i-1,j)
endif
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adomega3(i,j) = adomega3(i,j)+advort3r(i,j)*r_hfacz(i,j)
advort3r(i,j) = 0.d0
end do
end do
end
subroutine admom_vi_v_grad_ke( bi, bj, k, adke, addkedy )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
C==============================================
C declare arguments
C==============================================
double precision addkedy(1-olx:snx+olx,1-oly:sny+oly)
double precision adke(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = 2-oly, sny+oly
do i = 1-olx, snx+olx
adke(i,j-1) = adke(i,j-1)+addkedy(i,j)*recip_dyc(i,j,bi,bj)*
$masks(i,j,k,bi,bj)
adke(i,j) = adke(i,j)-addkedy(i,j)*recip_dyc(i,j,bi,bj)*masks(
$i,j,k,bi,bj)
addkedy(i,j) = 0.d0
end do
end do
end
subroutine admom_vi_v_vertshear( bi, bj, k, vfld, advfld, wfld,
$adwfld, advshearterm )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
double precision advfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advshearterm(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
integer k
double precision vfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
C==============================================
C declare local variables
C==============================================
double precision advsheartermh
double precision advsheartermi
double precision advzm
double precision advzp
double precision adwbarym
double precision adwbaryp
integer i
integer j
integer km1
integer kp1
double precision mask_km1
double precision mask_kp1
logical radvareaweight
double precision vzm
double precision vzp
double precision wbarym
double precision wbaryp
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
advzm = 0.d0
advzp = 0.d0
adwbarym = 0.d0
adwbaryp = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
radvareaweight = .true.
if (selectkescheme .eq. 1 .or. selectkescheme .eq. 3) then
radvareaweight = .false.
endif
kp1 = min(k+1,nr)
mask_kp1 = 1.
if (k .eq. nr) then
mask_kp1 = 0.
endif
km1 = max(k-1,1)
mask_km1 = 1.
if (k .eq. 1) then
mask_km1 = 0.
endif
do j = sny+oly, 2-oly, -1
do i = snx+olx, 1-olx, -1
if (radvareaweight) then
wbarym = 0.5*(wfld(i,j,k,bi,bj)*ra(i,j,bi,bj)*maskc(i,j,km1,
$bi,bj)+wfld(i,j-1,k,bi,bj)*ra(i,j-1,bi,bj)*maskc(i,j-1,km1,bi,bj))
$*mask_km1*recip_ras(i,j,bi,bj)
wbaryp = 0.5*(wfld(i,j,kp1,bi,bj)*ra(i,j,bi,bj)+wfld(i,j-1,
$kp1,bi,bj)*ra(i,j-1,bi,bj))*mask_kp1*recip_ras(i,j,bi,bj)
else
wbarym = 0.5*(wfld(i,j,k,bi,bj)*maskc(i,j,km1,bi,bj)+wfld(i,
$j-1,k,bi,bj)*maskc(i,j-1,km1,bi,bj))*mask_km1
wbaryp = 0.5*(wfld(i,j,kp1,bi,bj)+wfld(i,j-1,kp1,bi,bj))*
$mask_kp1
endif
vzm = (vfld(i,j,k,bi,bj)-mask_km1*vfld(i,j,km1,bi,bj))*rksign
vzp = (mask_kp1*vfld(i,j,kp1,bi,bj)-vfld(i,j,k,bi,bj))*rksign
if (upwindshear) then
advsheartermh = 0.5*advshearterm(i,j)*vzm*recip_hfacs(i,j,k,
$bi,bj)*recip_drf(k)
advsheartermi = -(0.5*advshearterm(i,j)*vzp*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k))
advzm = advzm-0.5*advshearterm(i,j)*(wbarym-abs(wbarym))*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)
advzp = advzp-0.5*advshearterm(i,j)*(wbaryp+abs(wbaryp))*
$recip_hfacs(i,j,k,bi,bj)*recip_drf(k)
adwbarym = adwbarym-0.5*advshearterm(i,j)*vzm*recip_hfacs(i,
$j,k,bi,bj)*recip_drf(k)
adwbaryp = adwbaryp-0.5*advshearterm(i,j)*vzp*recip_hfacs(i,
$j,k,bi,bj)*recip_drf(k)
adwbaryp = adwbaryp+advsheartermi*sign(1.d0,wbaryp)
adwbarym = adwbarym+advsheartermh*sign(1.d0,wbarym)
advshearterm(i,j) = 0.d0
else
advzm = advzm-0.5*advshearterm(i,j)*wbarym*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)
advzp = advzp-0.5*advshearterm(i,j)*wbaryp*recip_hfacs(i,j,
$k,bi,bj)*recip_drf(k)
adwbarym = adwbarym-0.5*advshearterm(i,j)*vzm*recip_hfacs(i,
$j,k,bi,bj)*recip_drf(k)
adwbaryp = adwbaryp-0.5*advshearterm(i,j)*vzp*recip_hfacs(i,
$j,k,bi,bj)*recip_drf(k)
advshearterm(i,j) = 0.d0
endif
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)-advzp*rksign
advfld(i,j,kp1,bi,bj) = advfld(i,j,kp1,bi,bj)+advzp*mask_kp1*
$rksign
advzp = 0.d0
advfld(i,j,k,bi,bj) = advfld(i,j,k,bi,bj)+advzm*rksign
advfld(i,j,km1,bi,bj) = advfld(i,j,km1,bi,bj)-advzm*mask_km1*
$rksign
advzm = 0.d0
if (radvareaweight) then
adwfld(i,j-1,kp1,bi,bj) = adwfld(i,j-1,kp1,bi,bj)+0.5*
$adwbaryp*ra(i,j-1,bi,bj)*mask_kp1*recip_ras(i,j,bi,bj)
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)+0.5*adwbaryp*
$ra(i,j,bi,bj)*mask_kp1*recip_ras(i,j,bi,bj)
adwbaryp = 0.d0
adwfld(i,j-1,k,bi,bj) = adwfld(i,j-1,k,bi,bj)+0.5*adwbarym*
$ra(i,j-1,bi,bj)*maskc(i,j-1,km1,bi,bj)*mask_km1*recip_ras(i,j,bi,
$bj)
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.5*adwbarym*ra(i,
$j,bi,bj)*maskc(i,j,km1,bi,bj)*mask_km1*recip_ras(i,j,bi,bj)
adwbarym = 0.d0
else
adwfld(i,j-1,kp1,bi,bj) = adwfld(i,j-1,kp1,bi,bj)+0.5*
$adwbaryp*mask_kp1
adwfld(i,j,kp1,bi,bj) = adwfld(i,j,kp1,bi,bj)+0.5*adwbaryp*
$mask_kp1
adwbaryp = 0.d0
adwfld(i,j-1,k,bi,bj) = adwfld(i,j-1,k,bi,bj)+0.5*adwbarym*
$maskc(i,j-1,km1,bi,bj)*mask_km1
adwfld(i,j,k,bi,bj) = adwfld(i,j,k,bi,bj)+0.5*adwbarym*
$maskc(i,j,km1,bi,bj)*mask_km1
adwbarym = 0.d0
endif
end do
end do
end
subroutine admomentum_correction_step( mytime, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
double precision adphisurfx(1-olx:snx+olx,1-oly:sny+oly)
double precision adphisurfy(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer ip1
integer ip2
integer jmax
integer jmin
integer k
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adphisurfx(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adphisurfy(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (implicitintgravwave) then
call adexch_xyz_rl( adwvel,mythid )
endif
if (exactconserv .and. implicdiv2dflow .ne. 0.d0) then
call adexch_xy_rl( adetan,mythid )
endif
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
call adintegr_continuity( bi,bj,aduvel,advvel,mytime )
end do
end do
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
imin = 1-olx+1
imax = snx+olx
jmin = 1-oly+1
jmax = sny+oly
do k = nr, 1, -1
if (momstepping) then
call adcorrection_step( bi,bj,imin,imax,jmin,jmax,k,
$adphisurfx,adphisurfy )
endif
end do
call adcalc_grad_phi_surf( bi,bj,imin,imax,jmin,jmax,adetan,
$adphisurfx,adphisurfy )
end do
end do
end
subroutine adpackages_init_variables( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
integer mythid
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
call barrier( mythid )
call barrier( mythid )
call adcost_init_varia
call barrier( mythid )
end
subroutine mdpackages_init_variables( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
C==============================================
C declare arguments
C==============================================
integer mythid
C**********************************************
C executable statements of routine
C**********************************************
if (usecdscheme) then
call cd_code_ini_vars( mythid )
endif
call adwrite( 'tapelev_init_1_the_main_loop_theta',34,13,1,theta,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,1 )
call barrier( mythid )
call cost_init_varia( mythid )
call barrier( mythid )
end
subroutine adpressure_for_eos( bi, bj, k, adlocpres )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adrhoinsitu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adtotphihyd(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_diag/ adtotphihyd, adrhoinsitu
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
double precision adlocpres(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (usingzcoords) then
if (usedynp_ineos_zc) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adtotphihyd(i,j,k,bi,bj) = adtotphihyd(i,j,k,bi,bj)+
$adlocpres(i,j)*rhoconst
adlocpres(i,j) = 0.d0
end do
end do
endif
endif
end
subroutine adread_rec_xy_rs( adfield )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adfield(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
C==============================================
C declare local variables
C==============================================
integer ip1
integer ip2
integer ip3
integer ip4
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfield(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
end
subroutine adsolve_for_pressure( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_cd/ aduveld, advveld, adetanm1, adunm1, advnm1
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adetah(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /addynvars_r_2/ adetah
double precision adempmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adffields_empmr/ adempmr
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
double precision empmr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /ffields_empmr/ empmr
integer klowc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
integer ksurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_i/ ksurfc, ksurfw, ksurfs, klowc
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
double precision bo_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision phi0surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_bo(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision topoz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /surf_fixed/ bo_surf, recip_bo, topoz, phi0surf
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
double precision adcg2d_b(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adcg2d_bh(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adcg2d_x(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adsumemp
double precision adtileemp(nsx,nsy)
double precision adtmpfac
integer bi
integer bj
double precision firstresidual
integer i
integer ip1
integer ip2
integer ip3
integer ip4
integer j
integer k
integer ks
double precision lastresidual
integer numiters
logical putpmeinxvector
double precision tmpfac
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcg2d_b(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcg2d_bh(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcg2d_x(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
adsumemp = 0.d0
do ip2 = 1, nsy
do ip1 = 1, nsx
adtileemp(ip1,ip2) = 0.d0
end do
end do
adtmpfac = 0.d0
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
putpmeinxvector = .false.
firstresidual = 0.
lastresidual = 0.
numiters = cg2dmaxiters
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adcg2d_x(i,j,bi,bj) = adcg2d_x(i,j,bi,bj)+adetan(i,j,bi,
$bj)*recip_bo(i,j,bi,bj)
adetan(i,j,bi,bj) = 0.d0
end do
end do
end do
end do
call adexch_xy_rl( adcg2d_x,mythid )
if ( .true. ) then
call cg2d( adcg2d_x,adcg2d_bh,firstresidual,lastresidual,
$numiters,mythid )
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcg2d_b(ip1,ip2,ip3,ip4) = adcg2d_b(ip1,ip2,ip3,ip4)+
$adcg2d_bh(ip1,ip2,ip3,ip4)
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcg2d_x(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
endif
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
if (exactconserv) then
do j = 1, sny
do i = 1, snx
ks = ksurfc(i,j,bi,bj)
adetah(i,j,bi,bj) = adetah(i,j,bi,bj)-adcg2d_b(i,j,bi,
$bj)*(freesurffac*ra(i,j,bi,bj)*deepfac2f(ks)/deltatmom/
$deltatfreesurf)
end do
end do
else
do j = 1, sny
do i = 1, snx
ks = ksurfc(i,j,bi,bj)
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)-adcg2d_b(i,j,bi,
$bj)*(freesurffac*ra(i,j,bi,bj)*deepfac2f(ks)/deltatmom/
$deltatfreesurf)
end do
end do
endif
end do
end do
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
do k = 1, nr
call adcalc_div_ghat( bi,bj,k,adcg2d_b )
end do
if (putpmeinxvector) then
do j = 1, sny
do i = 1, snx
adtmpfac = adtmpfac-adcg2d_x(i,j,bi,bj)*bo_surf(i,j,bi,
$bj)
end do
end do
if (globalarea .gt. 0.) then
adsumemp = adsumemp+adtmpfac*(freesurffac*deltatfreesurf*
$mass2runit/globalarea)
adtmpfac = 0.d0
endif
adtmpfac = 0.d0
endif
end do
end do
if (putpmeinxvector) then
call global_adsum_tile_rl( adtileemp,adsumemp,mythid )
endif
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
if (putpmeinxvector) then
do j = 1, sny
do i = 1, snx
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)+adtileemp(bi,bj)
$*ra(i,j,bi,bj)*maskinc(i,j,bi,bj)
end do
end do
adtileemp(bi,bj) = 0.d0
endif
if (userealfreshwaterflux .and. fluidiswater) then
tmpfac = freesurffac*mass2runit
if (exactconserv) then
tmpfac = freesurffac*mass2runit*implicdiv2dflow
endif
do j = 1, sny
do i = 1, snx
adempmr(i,j,bi,bj) = adempmr(i,j,bi,bj)+adcg2d_b(i,j,bi,
$bj)*(tmpfac*ra(i,j,bi,bj)/deltatmom)
adtmpfac = adtmpfac+adcg2d_b(i,j,bi,bj)*(ra(i,j,bi,bj)*
$empmr(i,j,bi,bj)/deltatmom)
adcg2d_b(i,j,bi,bj) = 0.d0
end do
end do
endif
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adcg2d_b(i,j,bi,bj) = 0.d0
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+adcg2d_x(i,j,bi,bj)*
$bo_surf(i,j,bi,bj)
adcg2d_x(i,j,bi,bj) = 0.d0
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+adetanm1(i,j,bi,bj)
adetanm1(i,j,bi,bj) = 0.d0
end do
end do
end do
end do
end
subroutine adthe_main_loop( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nchklev_1
parameter ( nchklev_1 = 30 )
integer nchklev_2
parameter ( nchklev_2 = 5 )
integer nchklev_3
parameter ( nchklev_3 = 5 )
integer ndv2d
parameter ( ndv2d = 23 )
integer ndv3d
parameter ( ndv3d = 12 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision storedynvars2d(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy,ndv2d)
double precision storedynvars3d(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy,ndv3d)
common /autodiff_store_dyn/ storedynvars3d, storedynvars2d
double precision cmeantheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision cmeanthetauvel(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision cmeanthetavvel(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision cmeanuvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision cmeanvvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /cost_mean_r/ cmeantheta, cmeanuvel, cmeanvvel,
$cmeanthetauvel, cmeanthetavvel
double precision etanm1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision unm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vveld(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_cd/ uveld, vveld, etanm1, unm1, vnm1
double precision qnetm(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /mean_qnet/ qnetm
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer ilev_1
integer ilev_2
integer ilev_3
integer iloop
integer max_lev2
integer max_lev3
integer myiter
double precision mytime
C----------------------------------------------
C RESET GLOBAL ADJOINT VARIABLES
C----------------------------------------------
call adzero
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
C----------------------------------------------
C OPEN TAPE tapelev3
C----------------------------------------------
call adopen( 'tapelev3_1_the_main_loop_storedynvars2d',39,15,1,8,
$108192 )
call adopen( 'tapelev3_2_the_main_loop_storedynvars3d',39,15,2,8,
$846720 )
call adopen( 'tapelev3_3_the_main_loop_uveld',30,15,3,8,70560 )
call adopen( 'tapelev3_4_the_main_loop_vveld',30,15,4,8,70560 )
call adopen( 'tapelev3_5_the_main_loop_etanm1',31,15,5,8,4704 )
call adopen( 'tapelev3_6_the_main_loop_unm1',29,15,6,8,70560 )
call adopen( 'tapelev3_7_the_main_loop_vnm1',29,15,7,8,70560 )
call adopen( 'tapelev3_8_the_main_loop_cmeantheta',35,15,8,8,
$70560 )
call adopen( 'tapelev3_13_the_main_loop_qnetm',31,15,13,8,4704 )
C----------------------------------------------
C FUNCTION AND TAPE COMPUTATIONS
C----------------------------------------------
call initialise_varia( mythid )
max_lev3 = ntimesteps/(nchklev_1*nchklev_2)+1
max_lev2 = ntimesteps/nchklev_1+1
do ilev_3 = 1, nchklev_3
if (ilev_3 .le. max_lev3) then
call autodiff_store( mythid )
call adwrite( 'tapelev3_1_the_main_loop_storedynvars2d',39,15,
$1,storedynvars2d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*
$nsy*ndv2d,ilev_3 )
call adwrite( 'tapelev3_2_the_main_loop_storedynvars3d',39,15,
$2,storedynvars3d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*
$nsy*ndv3d,ilev_3 )
call adwrite( 'tapelev3_3_the_main_loop_uveld',30,15,3,uveld,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adwrite( 'tapelev3_4_the_main_loop_vveld',30,15,4,vveld,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adwrite( 'tapelev3_5_the_main_loop_etanm1',31,15,5,
$etanm1,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_3 )
call adwrite( 'tapelev3_6_the_main_loop_unm1',29,15,6,unm1,8,(
$1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adwrite( 'tapelev3_7_the_main_loop_vnm1',29,15,7,vnm1,8,(
$1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adwrite( 'tapelev3_8_the_main_loop_cmeantheta',35,15,8,
$cmeantheta,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,
$ilev_3 )
call adwrite( 'tapelev3_13_the_main_loop_qnetm',31,15,13,
$qnetm,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_3 )
call autodiff_restore( mythid )
do ilev_2 = 1, nchklev_2
if (ilev_2 .le. max_lev2) then
call autodiff_store( mythid )
call autodiff_restore( mythid )
do ilev_1 = 1, nchklev_1
iloop = (ilev_2-1)*nchklev_1+ilev_1+(ilev_3-1)*
$nchklev_2*nchklev_1
if (iloop .le. ntimesteps) then
niter0 = nint((starttime-basetime)/deltatclock)
ikey_dynamics = ilev_1
call forward_step( iloop,mytime,myiter,mythid )
endif
end do
endif
end do
endif
end do
call cost_final( mythid )
call barrier( mythid )
C----------------------------------------------
C ADJOINT COMPUTATIONS
C----------------------------------------------
call barrier( mythid )
call adcost_final( mythid )
do ilev_3 = nchklev_3, 1, -1
if (ilev_3 .le. max_lev3) then
call adread( 'tapelev3_1_the_main_loop_storedynvars2d',39,15,
$1,storedynvars2d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*
$nsy*ndv2d,ilev_3 )
call adread( 'tapelev3_2_the_main_loop_storedynvars3d',39,15,
$2,storedynvars3d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*
$nsy*ndv3d,ilev_3 )
call adread( 'tapelev3_3_the_main_loop_uveld',30,15,3,uveld,8,
$(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adread( 'tapelev3_4_the_main_loop_vveld',30,15,4,vveld,8,
$(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adread( 'tapelev3_5_the_main_loop_etanm1',31,15,5,etanm1,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_3 )
call adread( 'tapelev3_6_the_main_loop_unm1',29,15,6,unm1,8,(
$1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adread( 'tapelev3_7_the_main_loop_vnm1',29,15,7,vnm1,8,(
$1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_3 )
call adread( 'tapelev3_8_the_main_loop_cmeantheta',35,15,8,
$cmeantheta,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,
$ilev_3 )
call adread( 'tapelev3_13_the_main_loop_qnetm',31,15,13,qnetm,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_3 )
call autodiff_restore( mythid )
C----------------------------------------------
C OPEN TAPE tapelev2
C----------------------------------------------
call adopen( 'tapelev2_1_the_main_loop_storedynvars2d',39,16,
$1,8,108192 )
call adopen( 'tapelev2_2_the_main_loop_storedynvars3d',39,16,
$2,8,846720 )
call adopen( 'tapelev2_3_the_main_loop_uveld',30,16,3,8,70560
$)
call adopen( 'tapelev2_4_the_main_loop_vveld',30,16,4,8,70560
$)
call adopen( 'tapelev2_5_the_main_loop_etanm1',31,16,5,8,4704
$)
call adopen( 'tapelev2_6_the_main_loop_unm1',29,16,6,8,70560 )
call adopen( 'tapelev2_7_the_main_loop_vnm1',29,16,7,8,70560 )
call adopen( 'tapelev2_8_the_main_loop_cmeantheta',35,16,8,8,
$70560 )
call adopen( 'tapelev2_13_the_main_loop_qnetm',31,16,13,8,
$4704 )
C----------------------------------------------
C TAPE COMPUTATIONS
C----------------------------------------------
do ilev_2 = 1, nchklev_2-1
if (ilev_2 .le. max_lev2) then
call autodiff_store( mythid )
call adwrite( 'tapelev2_1_the_main_loop_storedynvars2d',
$39,16,1,storedynvars2d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*
$nsx*nsy*ndv2d,ilev_2 )
call adwrite( 'tapelev2_2_the_main_loop_storedynvars3d',
$39,16,2,storedynvars3d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*
$nr*nsx*nsy*ndv3d,ilev_2 )
call adwrite( 'tapelev2_3_the_main_loop_uveld',30,16,3,
$uveld,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2
$)
call adwrite( 'tapelev2_4_the_main_loop_vveld',30,16,4,
$vveld,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2
$)
call adwrite( 'tapelev2_5_the_main_loop_etanm1',31,16,5,
$etanm1,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_2 )
call adwrite( 'tapelev2_6_the_main_loop_unm1',29,16,6,
$unm1,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2 )
call adwrite( 'tapelev2_7_the_main_loop_vnm1',29,16,7,
$vnm1,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2 )
call adwrite( 'tapelev2_8_the_main_loop_cmeantheta',35,16,
$8,cmeantheta,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,
$ilev_2 )
call adwrite( 'tapelev2_13_the_main_loop_qnetm',31,16,13,
$qnetm,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_2 )
call autodiff_restore( mythid )
do ilev_1 = 1, nchklev_1
iloop = (ilev_2-1)*nchklev_1+ilev_1+(ilev_3-1)*
$nchklev_2*nchklev_1
if (iloop .le. ntimesteps) then
niter0 = nint((starttime-basetime)/deltatclock)
ikey_dynamics = ilev_1
call forward_step( iloop,mytime,myiter,mythid )
endif
end do
endif
end do
ilev_2 = nchklev_2
if (ilev_2 .le. max_lev2) then
call autodiff_store( mythid )
call adwrite( 'tapelev2_1_the_main_loop_storedynvars2d',39,
$16,1,storedynvars2d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*
$nsy*ndv2d,ilev_2 )
call adwrite( 'tapelev2_2_the_main_loop_storedynvars3d',39,
$16,2,storedynvars3d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*
$nsx*nsy*ndv3d,ilev_2 )
call adwrite( 'tapelev2_3_the_main_loop_uveld',30,16,3,
$uveld,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2
$)
call adwrite( 'tapelev2_4_the_main_loop_vveld',30,16,4,
$vveld,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2
$)
call adwrite( 'tapelev2_5_the_main_loop_etanm1',31,16,5,
$etanm1,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_2 )
call adwrite( 'tapelev2_6_the_main_loop_unm1',29,16,6,unm1,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2 )
call adwrite( 'tapelev2_7_the_main_loop_vnm1',29,16,7,vnm1,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2 )
call adwrite( 'tapelev2_8_the_main_loop_cmeantheta',35,16,8,
$cmeantheta,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,
$ilev_2 )
call adwrite( 'tapelev2_13_the_main_loop_qnetm',31,16,13,
$qnetm,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_2 )
endif
C----------------------------------------------
C ADJOINT COMPUTATIONS
C----------------------------------------------
do ilev_2 = nchklev_2, 1, -1
if (ilev_2 .le. max_lev2) then
call adread( 'tapelev2_1_the_main_loop_storedynvars2d',39,
$16,1,storedynvars2d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*
$nsy*ndv2d,ilev_2 )
call adread( 'tapelev2_2_the_main_loop_storedynvars3d',39,
$16,2,storedynvars3d,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*
$nsx*nsy*ndv3d,ilev_2 )
call adread( 'tapelev2_3_the_main_loop_uveld',30,16,3,
$uveld,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2
$)
call adread( 'tapelev2_4_the_main_loop_vveld',30,16,4,
$vveld,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2
$)
call adread( 'tapelev2_5_the_main_loop_etanm1',31,16,5,
$etanm1,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_2 )
call adread( 'tapelev2_6_the_main_loop_unm1',29,16,6,unm1,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2 )
call adread( 'tapelev2_7_the_main_loop_vnm1',29,16,7,vnm1,
$8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,ilev_2 )
call adread( 'tapelev2_8_the_main_loop_cmeantheta',35,16,
$8,cmeantheta,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nr*nsx*nsy,
$ilev_2 )
call adread( 'tapelev2_13_the_main_loop_qnetm',31,16,13,
$qnetm,8,(1+snx+olx-(1-olx))*(1+sny+oly-(1-oly))*nsx*nsy,ilev_2 )
call autodiff_restore( mythid )
C----------------------------------------------
C TAPE COMPUTATIONS
C----------------------------------------------
do ilev_1 = 1, nchklev_1
iloop = (ilev_2-1)*nchklev_1+ilev_1+(ilev_3-1)*
$nchklev_2*nchklev_1
if (iloop .le. ntimesteps) then
niter0 = nint((starttime-basetime)/deltatclock)
ikey_dynamics = ilev_1
call mdforward_step( iloop,mytime,myiter,mythid )
endif
end do
C----------------------------------------------
C ADJOINT COMPUTATIONS
C----------------------------------------------
do ilev_1 = nchklev_1, 1, -1
iloop = (ilev_2-1)*nchklev_1+ilev_1+(ilev_3-1)*
$nchklev_2*nchklev_1
if (iloop .le. ntimesteps) then
niter0 = nint((starttime-basetime)/deltatclock)
ikey_dynamics = ilev_1
call adforward_step( iloop,mythid )
endif
end do
call adautodiff_restore( mythid )
call adautodiff_store( mythid )
endif
end do
C----------------------------------------------
C CLOSE TAPE tapelev2
C----------------------------------------------
call adclose( 'tapelev2_1_the_main_loop_storedynvars2d',39,16,
$1,8,108192 )
call adclose( 'tapelev2_2_the_main_loop_storedynvars3d',39,16,
$2,8,846720 )
call adclose( 'tapelev2_3_the_main_loop_uveld',30,16,3,8,
$70560 )
call adclose( 'tapelev2_4_the_main_loop_vveld',30,16,4,8,
$70560 )
call adclose( 'tapelev2_5_the_main_loop_etanm1',31,16,5,8,
$4704 )
call adclose( 'tapelev2_6_the_main_loop_unm1',29,16,6,8,70560
$)
call adclose( 'tapelev2_7_the_main_loop_vnm1',29,16,7,8,70560
$)
call adclose( 'tapelev2_8_the_main_loop_cmeantheta',35,16,8,8,
$70560 )
call adclose( 'tapelev2_13_the_main_loop_qnetm',31,16,13,8,
$4704 )
call adautodiff_restore( mythid )
call adautodiff_store( mythid )
endif
end do
call adinitialise_varia( mythid )
C----------------------------------------------
C CLOSE TAPE tapelev3
C----------------------------------------------
call adclose( 'tapelev3_1_the_main_loop_storedynvars2d',39,15,1,8,
$108192 )
call adclose( 'tapelev3_2_the_main_loop_storedynvars3d',39,15,2,8,
$846720 )
call adclose( 'tapelev3_3_the_main_loop_uveld',30,15,3,8,70560 )
call adclose( 'tapelev3_4_the_main_loop_vveld',30,15,4,8,70560 )
call adclose( 'tapelev3_5_the_main_loop_etanm1',31,15,5,8,4704 )
call adclose( 'tapelev3_6_the_main_loop_unm1',29,15,6,8,70560 )
call adclose( 'tapelev3_7_the_main_loop_vnm1',29,15,7,8,70560 )
call adclose( 'tapelev3_8_the_main_loop_cmeantheta',35,15,8,8,
$70560 )
call adclose( 'tapelev3_13_the_main_loop_qnetm',31,15,13,8,4704 )
end
subroutine adthermodynamics( myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_salinity
parameter ( gad_salinity = 2 )
integer gad_temperature
parameter ( gad_temperature = 1 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adssurfcor
double precision adtsurfcor
common /adsurf_correc/ adtsurfcor, adssurfcor
real*8 comlev1_bibj_gs_34h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgs/ comlev1_bibj_gs_34h
real*8 comlev1_bibj_k_gsnm1_68h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgsnm1/ comlev1_bibj_k_gsnm1_68h
real*8 comlev1_bibj_gt_32h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgt/ comlev1_bibj_gt_32h
real*8 comlev1_bibj_k_gtnm1_67h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgtnm1/ comlev1_bibj_k_gtnm1_67h
real*8 comlev1_bibj_k_gt_69h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgu/ comlev1_bibj_k_gt_69h
real*8 comlev1_bibj_kappark_33h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkappark/ comlev1_bibj_kappark_33h
real*8 comlev1_bibj_kappark_31h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparl/ comlev1_bibj_kappark_31h
real*8 comlev1_bibj_k_kappars_66h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadkappars/ comlev1_bibj_k_kappars_66h
real*8 comlev1_bibj_k_kappart_65h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadkappart/ comlev1_bibj_k_kappart_65h
real*8 comlev1_bibj_k_rtrans_63h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadrtrans/ comlev1_bibj_k_rtrans_63h
real*8 comlev1_bibj_k_rtranskp1_62h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadrtranskp1/ comlev1_bibj_k_rtranskp1_62h
real*8 comlev1_bibj_salt_28h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadsalw/ comlev1_bibj_salt_28h
real*8 comlev1_salt_47h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadsalx/ comlev1_salt_47h
real*8 comlev1_bibj_theta_27h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadthete/ comlev1_bibj_theta_27h
real*8 comlev1_theta_46h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,
$30)
common /cadthetf/ comlev1_theta_46h
real*8 comlev1_bibj_uvel_29h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /caduvem/ comlev1_bibj_uvel_29h
real*8 comlev1_bibj_vvel_30h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadvvem/ comlev1_bibj_vvel_30h
real*8 comlev1_bibj_k_wfld_64h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadwfld/ comlev1_bibj_k_wfld_64h
real*8 comlev1_bibj_wvel_26h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadwvel/ comlev1_bibj_wvel_26h
real*8 comlev1_wvel_48h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadwvem/ comlev1_wvel_48h
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical adamsbashforth_s
logical adamsbashforth_t
logical adamsbashforthgs
logical adamsbashforthgt
logical saltmultidimadvec
logical saltsom_advection
logical tempmultidimadvec
logical tempsom_advection
common /gad_parm_l/ tempsom_advection, saltsom_advection,
$tempmultidimadvec, saltmultidimadvec, adamsbashforthgt,
$adamsbashforthgs, adamsbashforth_t, adamsbashforth_s
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
double precision adfvers(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adfvert(1-olx:snx+olx,1-oly:sny+oly,2)
double precision adkappark(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision adkappars(1-olx:snx+olx,1-oly:sny+oly)
double precision adkappart(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adrtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision adufld(1-olx:snx+olx,1-oly:sny+oly)
double precision adutrans(1-olx:snx+olx,1-oly:sny+oly)
double precision advfld(1-olx:snx+olx,1-oly:sny+oly)
double precision advtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision adwfld(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer i
integer imax
integer imin
integer ip1
integer ip2
integer ip3
integer ip4
integer ip5
integer itdkey
integer j
integer jmax
integer jmin
integer k
double precision kappark(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kappars(1-olx:snx+olx,1-oly:sny+oly)
double precision kappart(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer kkey
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer max1
integer max2
integer max3
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip3 = 1, 2
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfvers(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, 2
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adfvert(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adkappark(ip1,ip2,ip3) = 0.d0
end do
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adkappars(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adkappart(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrtrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adrtranskp1(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adufld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adutrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advfld(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
advtrans(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adwfld(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
itdkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
wvel(ip1,ip2,ip3,bi,bj) = comlev1_bibj_wvel_26h(ip1,ip2,
$ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,ip3,bi,bj) = comlev1_bibj_theta_27h(ip1,
$ip2,ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,ip3,bi,bj) = comlev1_bibj_salt_28h(ip1,ip2,
$ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
uvel(ip1,ip2,ip3,bi,bj) = comlev1_bibj_uvel_29h(ip1,ip2,
$ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
vvel(ip1,ip2,ip3,bi,bj) = comlev1_bibj_vvel_30h(ip1,ip2,
$ip3,itdkey)
end do
end do
end do
imin = 1
imax = snx
jmin = 1
jmax = sny
if (saltstepping .and. implicitdiffusion) then
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kappark(ip1,ip2,ip3) = comlev1_bibj_kappark_33h(ip1,
$ip2,ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gs(ip1,ip2,ip3,bi,bj) = comlev1_bibj_gs_34h(ip1,ip2,
$ip3,itdkey)
end do
end do
end do
call adimpldiff( bi,bj,imin,imax,jmin,jmax,gad_salinity,
$kappark,adkappark,recip_hfacc,gs,adgs )
endif
if (saltstepping .and. implicitdiffusion) then
call adcalc_3d_diffusivity( bi,bj,imin,imax,jmin,jmax,
$gad_salinity,usegmredi,usekpp,adkappark )
endif
if (tempstepping .and. implicitdiffusion) then
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kappark(ip1,ip2,ip3) = comlev1_bibj_kappark_31h(ip1,
$ip2,ip3,itdkey)
end do
end do
end do
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gt(ip1,ip2,ip3,bi,bj) = comlev1_bibj_gt_32h(ip1,ip2,
$ip3,itdkey)
end do
end do
end do
call adimpldiff( bi,bj,imin,imax,jmin,jmax,gad_temperature,
$kappark,adkappark,recip_hfacc,gt,adgt )
endif
if (tempstepping .and. implicitdiffusion) then
call adcalc_3d_diffusivity( bi,bj,imin,imax,jmin,jmax,
$gad_temperature,usegmredi,usekpp,adkappark )
endif
do k = 1, nr
kkey = (itdkey-1)*nr+k
kup = 1+mod(k+1,2)
kdown = 1+mod(k,2)
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
rtranskp1(ip1,ip2) = comlev1_bibj_k_rtranskp1_62h(ip1,
$ip2,kkey)
end do
end do
call calc_common_factors( uvel,vvel,ufld,vfld,utrans,vtrans,
$xa,ya,k,bi,bj,mythid )
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
maskup(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
maskup(i,j) = maskc(i,j,k-1,bi,bj)*maskc(i,j,k,bi,bj)
end do
end do
endif
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
rtrans(ip1,ip2) = comlev1_bibj_k_rtrans_63h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
wfld(ip1,ip2) = comlev1_bibj_k_wfld_64h(ip1,ip2,kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kappart(ip1,ip2) = comlev1_bibj_k_kappart_65h(ip1,ip2,
$kkey)
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
kappars(ip1,ip2) = comlev1_bibj_k_kappars_66h(ip1,ip2,
$kkey)
end do
end do
imin = 1-olx+2
imax = snx+olx-1
jmin = 1-oly+2
jmax = sny+oly-1
if (useoldfreezing .and. ( .not. useseaice) .and. ( .not. (
$usethsice .and. k .eq. 1))) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gt(ip1,ip2,k,bi,bj) = comlev1_bibj_k_gt_69h(ip1,ip2,
$kkey)
end do
end do
call adfreeze( bi,bj,imin,imax,jmin,jmax,k )
endif
if (saltstepping) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gsnm1(ip1,ip2,k,bi,bj) = comlev1_bibj_k_gsnm1_68h(ip1,
$ip2,kkey)
end do
end do
call adtimestep_tracer( bi,bj,imin,imax,jmin,jmax,k,
$dttracerlev(k),adsalt,adgs )
call adcalc_gs( bi,bj,imin,imax,jmin,jmax,k,kup,kdown,xa,
$ya,maskup,ufld,adufld,vfld,advfld,wfld,adwfld,utrans,adutrans,
$vtrans,advtrans,rtrans,adrtrans,rtranskp1,adrtranskp1,kappars,
$adkappars,adfvers,myiter,mythid )
endif
if (tempstepping) then
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
gtnm1(ip1,ip2,k,bi,bj) = comlev1_bibj_k_gtnm1_67h(ip1,
$ip2,kkey)
end do
end do
call adtimestep_tracer( bi,bj,imin,imax,jmin,jmax,k,
$dttracerlev(k),adtheta,adgt )
call adcalc_gt( bi,bj,imin,imax,jmin,jmax,k,kup,kdown,xa,
$ya,maskup,ufld,adufld,vfld,advfld,wfld,adwfld,utrans,adutrans,
$vtrans,advtrans,rtrans,adrtrans,rtranskp1,adrtranskp1,kappart,
$adkappart,adfvert,myiter,mythid )
endif
imin = 1-olx
imax = snx+olx
jmin = 1-oly
jmax = sny+oly
if ( .not. implicitdiffusion) then
call adcalc_diffusivity( bi,bj,imin,imax,jmin,jmax,k,
$maskup,adkappart,adkappars )
endif
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrtrans(i,j) = 0.d0
adwfld(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
maskup(i,j) = maskc(i,j,k-1,bi,bj)*maskc(i,j,k,bi,bj)
adwfld(i,j) = adwfld(i,j)+adrtrans(i,j)*ra(i,j,bi,bj)*
$maskup(i,j)*deepfac2f(k)*rhofacf(k)
adrtrans(i,j) = 0.d0
adwvel(i,j,k,bi,bj) = adwvel(i,j,k,bi,bj)+adwfld(i,j)
adwfld(i,j) = 0.d0
end do
end do
endif
call adcalc_common_factors( aduvel,advvel,adufld,advfld,
$adutrans,advtrans,k,bi,bj )
if (k .eq. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrtranskp1(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adrtrans(i,j) = adrtrans(i,j)+adrtranskp1(i,j)
adrtranskp1(i,j) = 0.d0
end do
end do
endif
end do
if (saltmultidimadvec) then
call adgad_advection( saltimplvertadv,saltadvscheme,
$saltvertadvscheme,gad_salinity,dttracerlev,uvel,aduvel,vvel,
$advvel,wvel,adwvel,salt,adsalt,adgs,bi,bj,mythid )
endif
if (tempmultidimadvec) then
call adgad_advection( tempimplvertadv,tempadvscheme,
$tempvertadvscheme,gad_temperature,dttracerlev,uvel,aduvel,vvel,
$advvel,wvel,adwvel,theta,adtheta,adgt,bi,bj,mythid )
endif
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adgs(i,j,k,bi,bj) = 0.d0
adgt(i,j,k,bi,bj) = 0.d0
adkappark(i,j,k) = 0.d0
end do
end do
end do
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adkappars(i,j) = 0.d0
adkappart(i,j) = 0.d0
adfvers(i,j,2) = 0.d0
adfvers(i,j,1) = 0.d0
adfvert(i,j,2) = 0.d0
adfvert(i,j,1) = 0.d0
adrtranskp1(i,j) = 0.d0
adrtrans(i,j) = 0.d0
end do
end do
end do
end do
if (linfsconservetr) then
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
theta(ip1,ip2,ip3,ip4,ip5) = comlev1_theta_46h(ip1,
$ip2,ip3,ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
salt(ip1,ip2,ip3,ip4,ip5) = comlev1_salt_47h(ip1,ip2,
$ip3,ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
wvel(ip1,ip2,ip3,ip4,ip5) = comlev1_wvel_48h(ip1,ip2,
$ip3,ip4,ip5,ikey_dynamics)
end do
end do
end do
end do
end do
call adcalc_wsurf_tr( theta,adtheta,salt,adsalt,wvel,adwvel,
$mythid )
endif
adssurfcor = 0.d0
adtsurfcor = 0.d0
end
subroutine mdthermodynamics( mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer gad_salinity
parameter ( gad_salinity = 2 )
integer gad_temperature
parameter ( gad_temperature = 1 )
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
real*8 comlev1_bibj_gs_34h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgs/ comlev1_bibj_gs_34h
real*8 comlev1_bibj_k_gsnm1_68h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgsnm1/ comlev1_bibj_k_gsnm1_68h
real*8 comlev1_bibj_gt_32h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadgt/ comlev1_bibj_gt_32h
real*8 comlev1_bibj_k_gtnm1_67h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgtnm1/ comlev1_bibj_k_gtnm1_67h
real*8 comlev1_bibj_k_gt_69h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadgu/ comlev1_bibj_k_gt_69h
real*8 comlev1_bibj_kappark_33h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkappark/ comlev1_bibj_kappark_33h
real*8 comlev1_bibj_kappark_31h(1-olx:snx+olx,1-oly:sny+oly,nr,
$120)
common /cadkapparl/ comlev1_bibj_kappark_31h
real*8 comlev1_bibj_k_kappars_66h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadkappars/ comlev1_bibj_k_kappars_66h
real*8 comlev1_bibj_k_kappart_65h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadkappart/ comlev1_bibj_k_kappart_65h
real*8 comlev1_bibj_k_rtrans_63h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadrtrans/ comlev1_bibj_k_rtrans_63h
real*8 comlev1_bibj_k_rtranskp1_62h(1-olx:snx+olx,1-oly:sny+oly,
$1800)
common /cadrtranskp1/ comlev1_bibj_k_rtranskp1_62h
real*8 comlev1_bibj_salt_28h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadsalw/ comlev1_bibj_salt_28h
real*8 comlev1_salt_47h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadsalx/ comlev1_salt_47h
real*8 comlev1_bibj_theta_27h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadthete/ comlev1_bibj_theta_27h
real*8 comlev1_theta_46h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,
$30)
common /cadthetf/ comlev1_theta_46h
real*8 comlev1_bibj_uvel_29h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /caduvem/ comlev1_bibj_uvel_29h
real*8 comlev1_bibj_vvel_30h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadvvem/ comlev1_bibj_vvel_30h
real*8 comlev1_bibj_k_wfld_64h(1-olx:snx+olx,1-oly:sny+oly,1800)
common /cadwfld/ comlev1_bibj_k_wfld_64h
real*8 comlev1_bibj_wvel_26h(1-olx:snx+olx,1-oly:sny+oly,nr,120)
common /cadwvel/ comlev1_bibj_wvel_26h
real*8 comlev1_wvel_48h(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy,30)
common /cadwvem/ comlev1_wvel_48h
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical adamsbashforth_s
logical adamsbashforth_t
logical adamsbashforthgs
logical adamsbashforthgt
logical saltmultidimadvec
logical saltsom_advection
logical tempmultidimadvec
logical tempsom_advection
common /gad_parm_l/ tempsom_advection, saltsom_advection,
$tempmultidimadvec, saltmultidimadvec, adamsbashforthgt,
$adamsbashforthgs, adamsbashforth_t, adamsbashforth_s
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
double precision ssurfcor
double precision tsurfcor
common /surf_correc/ tsurfcor, ssurfcor
integer ikey_daily_1
integer ikey_daily_2
integer ikey_dynamics
integer ikey_yearly
integer iloop_daily
common /tamc_keys_i/ ikey_dynamics, ikey_yearly, ikey_daily_1,
$ikey_daily_2, iloop_daily
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer act1
integer act2
integer act3
integer act4
integer bi
integer bj
double precision fvers(1-olx:snx+olx,1-oly:sny+oly,2)
double precision fvert(1-olx:snx+olx,1-oly:sny+oly,2)
integer i
integer imax
integer imin
integer itdkey
integer iu7
integer iu8
integer iu9
integer iv0
integer iv1
integer iv2
integer iv3
integer iv4
integer iv5
integer iv6
integer iv7
integer iv8
integer iv9
integer iva
integer ivb
integer ivc
integer ivd
integer ive
integer ivf
integer ivg
integer ivh
integer ivi
integer ivz
integer iwa
integer iwb
integer iwc
integer iwd
integer iwe
integer iwf
integer iwg
integer iwh
integer iwi
integer iwj
integer iwk
integer iwl
integer iwm
integer iwn
integer iwo
integer iwp
integer iwq
integer iwr
integer iws
integer iwt
integer iwu
integer iwv
integer iww
integer iwx
integer iwy
integer j
integer jmax
integer jmin
integer k
double precision kappark(1-olx:snx+olx,1-oly:sny+oly,nr)
double precision kappars(1-olx:snx+olx,1-oly:sny+oly)
double precision kappart(1-olx:snx+olx,1-oly:sny+oly)
integer kdown
integer kkey
integer km1
integer kup
double precision maskup(1-olx:snx+olx,1-oly:sny+oly)
integer max1
integer max2
integer max3
double precision rtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision rtranskp1(1-olx:snx+olx,1-oly:sny+oly)
double precision ufld(1-olx:snx+olx,1-oly:sny+oly)
double precision utrans(1-olx:snx+olx,1-oly:sny+oly)
double precision vfld(1-olx:snx+olx,1-oly:sny+oly)
double precision vtrans(1-olx:snx+olx,1-oly:sny+oly)
double precision wfld(1-olx:snx+olx,1-oly:sny+oly)
double precision xa(1-olx:snx+olx,1-oly:sny+oly)
double precision ya(1-olx:snx+olx,1-oly:sny+oly)
C**********************************************
C executable statements of routine
C**********************************************
tsurfcor = 0.d0
ssurfcor = 0.d0
if (linfsconservetr) then
do iwy = 1, nsy
do iwx = 1, nsx
do iww = 1, nr
do iwv = 1-oly, sny+oly
do iwu = 1-olx, snx+olx
comlev1_theta_46h(iwu,iwv,iww,iwx,iwy,ikey_dynamics) =
$ theta(iwu,iwv,iww,iwx,iwy)
end do
end do
end do
end do
end do
do iwy = 1, nsy
do iwx = 1, nsx
do iww = 1, nr
do iwv = 1-oly, sny+oly
do iwu = 1-olx, snx+olx
comlev1_salt_47h(iwu,iwv,iww,iwx,iwy,ikey_dynamics) =
$salt(iwu,iwv,iww,iwx,iwy)
end do
end do
end do
end do
end do
do iwy = 1, nsy
do iwx = 1, nsx
do iww = 1, nr
do iwv = 1-oly, sny+oly
do iwu = 1-olx, snx+olx
comlev1_wvel_48h(iwu,iwv,iww,iwx,iwy,ikey_dynamics) =
$wvel(iwu,iwv,iww,iwx,iwy)
end do
end do
end do
end do
end do
call calc_wsurf_tr( theta,salt,wvel,mytime,myiter,mythid )
endif
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
act1 = bi-mybxlo(mythid)
max1 = mybxhi(mythid)-mybxlo(mythid)+1
act2 = bj-mybylo(mythid)
max2 = mybyhi(mythid)-mybylo(mythid)+1
act3 = mythid-1
max3 = ntx*nty
act4 = ikey_dynamics-1
itdkey = act1+1+act2*max1+act3*max1*max2+act4*max1*max2*max3
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtrans(i,j) = 0.d0
rtranskp1(i,j) = 0.d0
fvert(i,j,1) = 0.d0
fvert(i,j,2) = 0.d0
fvers(i,j,1) = 0.d0
fvers(i,j,2) = 0.d0
kappart(i,j) = 0.d0
kappars(i,j) = 0.d0
end do
end do
do k = 1, nr
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
kappark(i,j,k) = 0.d0
gt(i,j,k,bi,bj) = 0.d0
gs(i,j,k,bi,bj) = 0.d0
end do
end do
end do
do iwt = 1, nr
do iws = 1-oly, sny+oly
do iwr = 1-olx, snx+olx
comlev1_bibj_wvel_26h(iwr,iws,iwt,itdkey) = wvel(iwr,
$iws,iwt,bi,bj)
end do
end do
end do
do iwq = 1, nr
do iwp = 1-oly, sny+oly
do iwo = 1-olx, snx+olx
comlev1_bibj_theta_27h(iwo,iwp,iwq,itdkey) = theta(iwo,
$iwp,iwq,bi,bj)
end do
end do
end do
do iwn = 1, nr
do iwm = 1-oly, sny+oly
do iwl = 1-olx, snx+olx
comlev1_bibj_salt_28h(iwl,iwm,iwn,itdkey) = salt(iwl,
$iwm,iwn,bi,bj)
end do
end do
end do
do iwk = 1, nr
do iwj = 1-oly, sny+oly
do iwi = 1-olx, snx+olx
comlev1_bibj_uvel_29h(iwi,iwj,iwk,itdkey) = uvel(iwi,
$iwj,iwk,bi,bj)
end do
end do
end do
do iwh = 1, nr
do iwg = 1-oly, sny+oly
do iwf = 1-olx, snx+olx
comlev1_bibj_vvel_30h(iwf,iwg,iwh,itdkey) = vvel(iwf,
$iwg,iwh,bi,bj)
end do
end do
end do
if (tempmultidimadvec) then
call mdgad_advection( tempimplvertadv,tempadvscheme,
$tempvertadvscheme,gad_temperature,dttracerlev,uvel,vvel,wvel,
$theta,gt,bi,bj,mytime,myiter,mythid )
endif
if (saltmultidimadvec) then
call mdgad_advection( saltimplvertadv,saltadvscheme,
$saltvertadvscheme,gad_salinity,dttracerlev,uvel,vvel,wvel,salt,gs,
$bi,bj,mytime,myiter,mythid )
endif
do k = nr, 1, -1
kkey = (itdkey-1)*nr+k
kup = 1+mod(k+1,2)
kdown = 1+mod(k,2)
imin = 1-olx
imax = snx+olx
jmin = 1-oly
jmax = sny+oly
if (k .eq. nr) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtranskp1(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
rtranskp1(i,j) = rtrans(i,j)
end do
end do
endif
do iwe = 1-oly, sny+oly
do iwd = 1-olx, snx+olx
comlev1_bibj_k_rtranskp1_62h(iwd,iwe,kkey) = rtranskp1(
$iwd,iwe)
end do
end do
call calc_common_factors( uvel,vvel,ufld,vfld,utrans,vtrans,
$xa,ya,k,bi,bj,mythid )
if (k .eq. 1) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
wfld(i,j) = 0.d0
maskup(i,j) = 0.d0
rtrans(i,j) = 0.d0
end do
end do
else
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
wfld(i,j) = wvel(i,j,k,bi,bj)
maskup(i,j) = maskc(i,j,k-1,bi,bj)*maskc(i,j,k,bi,bj)
rtrans(i,j) = wfld(i,j)*ra(i,j,bi,bj)*maskup(i,j)*
$deepfac2f(k)*rhofacf(k)
end do
end do
endif
do iwc = 1-oly, sny+oly
do iwb = 1-olx, snx+olx
comlev1_bibj_k_rtrans_63h(iwb,iwc,kkey) = rtrans(iwb,
$iwc)
end do
end do
do iwa = 1-oly, sny+oly
do iv9 = 1-olx, snx+olx
comlev1_bibj_k_wfld_64h(iv9,iwa,kkey) = wfld(iv9,iwa)
end do
end do
if ( .not. implicitdiffusion) then
call calc_diffusivity( bi,bj,imin,imax,jmin,jmax,k,maskup,
$kappart,kappars,mythid )
endif
do iv8 = 1-oly, sny+oly
do iv7 = 1-olx, snx+olx
comlev1_bibj_k_kappart_65h(iv7,iv8,kkey) = kappart(iv7,
$iv8)
end do
end do
do iv6 = 1-oly, sny+oly
do iv5 = 1-olx, snx+olx
comlev1_bibj_k_kappars_66h(iv5,iv6,kkey) = kappars(iv5,
$iv6)
end do
end do
imin = 1-olx+2
imax = snx+olx-1
jmin = 1-oly+2
jmax = sny+oly-1
if (tempstepping) then
do iv4 = 1-oly, sny+oly
do iv3 = 1-olx, snx+olx
comlev1_bibj_k_gtnm1_67h(iv3,iv4,kkey) = gtnm1(iv3,
$iv4,k,bi,bj)
end do
end do
call mdcalc_gt( bi,bj,imin,imax,jmin,jmax,k,km1,kup,kdown,
$xa,ya,maskup,ufld,vfld,wfld,utrans,vtrans,rtrans,rtranskp1,
$kappart,fvert,mytime,myiter,mythid )
call timestep_tracer( bi,bj,imin,imax,jmin,jmax,k,
$tempadvscheme,dttracerlev(k),theta,gt,myiter,mythid )
endif
if (saltstepping) then
do iv2 = 1-oly, sny+oly
do iv1 = 1-olx, snx+olx
comlev1_bibj_k_gsnm1_68h(iv1,iv2,kkey) = gsnm1(iv1,
$iv2,k,bi,bj)
end do
end do
call mdcalc_gs( bi,bj,imin,imax,jmin,jmax,k,km1,kup,kdown,
$xa,ya,maskup,ufld,vfld,wfld,utrans,vtrans,rtrans,rtranskp1,
$kappars,fvers,mytime,myiter,mythid )
call timestep_tracer( bi,bj,imin,imax,jmin,jmax,k,
$saltadvscheme,dttracerlev(k),salt,gs,myiter,mythid )
endif
if (useoldfreezing .and. ( .not. useseaice) .and. ( .not. (
$usethsice .and. k .eq. 1))) then
do iv0 = 1-oly, sny+oly
do ivz = 1-olx, snx+olx
comlev1_bibj_k_gt_69h(ivz,iv0,kkey) = gt(ivz,iv0,k,bi,
$bj)
end do
end do
call freeze( bi,bj,imin,imax,jmin,jmax,k,mythid )
endif
end do
imin = 1
imax = snx
jmin = 1
jmax = sny
if (tempstepping .and. implicitdiffusion) then
call calc_3d_diffusivity( bi,bj,imin,imax,jmin,jmax,
$gad_temperature,usegmredi,usekpp,kappark,mythid )
endif
if (tempstepping .and. implicitdiffusion) then
do ivi = 1, nr
do ivh = 1-oly, sny+oly
do ivg = 1-olx, snx+olx
comlev1_bibj_kappark_31h(ivg,ivh,ivi,itdkey) =
$kappark(ivg,ivh,ivi)
end do
end do
end do
do ivf = 1, nr
do ive = 1-oly, sny+oly
do ivd = 1-olx, snx+olx
comlev1_bibj_gt_32h(ivd,ive,ivf,itdkey) = gt(ivd,ive,
$ivf,bi,bj)
end do
end do
end do
call impldiff( bi,bj,imin,imax,jmin,jmax,gad_temperature,
$kappark,recip_hfacc,gt,mythid )
endif
if (saltstepping .and. implicitdiffusion) then
call calc_3d_diffusivity( bi,bj,imin,imax,jmin,jmax,
$gad_salinity,usegmredi,usekpp,kappark,mythid )
endif
if (saltstepping .and. implicitdiffusion) then
do ivc = 1, nr
do ivb = 1-oly, sny+oly
do iva = 1-olx, snx+olx
comlev1_bibj_kappark_33h(iva,ivb,ivc,itdkey) =
$kappark(iva,ivb,ivc)
end do
end do
end do
do iu9 = 1, nr
do iu8 = 1-oly, sny+oly
do iu7 = 1-olx, snx+olx
comlev1_bibj_gs_34h(iu7,iu8,iu9,itdkey) = gs(iu7,iu8,
$iu9,bi,bj)
end do
end do
end do
call impldiff( bi,bj,imin,imax,jmin,jmax,gad_salinity,
$kappark,recip_hfacc,gs,mythid )
endif
end do
end do
end
subroutine adtimestep( bi, bj, imin, imax, jmin, jmax, k,
$addphihydx, addphihydy, adphisurfx, adphisurfy, adgudissip,
$adgvdissip, myiter )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision cosfacu(1-oly:sny+oly,nsx,nsy)
double precision cosfacv(1-oly:sny+oly,nsx,nsy)
double precision deepfac2c(nr)
double precision deepfac2f(nr+1)
double precision deepfacc(nr)
double precision deepfacf(nr+1)
double precision globalarea
double precision gravitysign
double precision recip_deepfac2c(nr)
double precision recip_deepfac2f(nr+1)
double precision recip_deepfacc(nr)
double precision recip_deepfacf(nr+1)
double precision rksign
double precision sqcosfacu(1-oly:sny+oly,nsx,nsy)
double precision sqcosfacv(1-oly:sny+oly,nsx,nsy)
common /grid_rl/ cosfacu, cosfacv, sqcosfacu, sqcosfacv, deepfacc,
$ deepfac2c, recip_deepfacc, recip_deepfac2c, deepfacf, deepfac2f,
$recip_deepfacf, recip_deepfac2f, gravitysign, rksign, globalarea
double precision ahybsigmc(nr)
double precision ahybsigmf(nr+1)
double precision anglecosc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision anglesinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision bhybsigmc(nr)
double precision bhybsigmf(nr+1)
double precision dahybsigc(nr+1)
double precision dahybsigf(nr)
double precision dbhybsigc(nr+1)
double precision dbhybsigf(nr)
double precision drc(nr)
double precision drf(nr)
double precision dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcori(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcoricos(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision fcorig(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskinc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskins(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision maskinw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision masks(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision maskw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision r_low(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rc(nr)
double precision recip_drc(nr)
double precision recip_drf(nr)
double precision recip_dxc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dxv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_dyu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_hfacc(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_hfacw(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision recip_ra(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_ras(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_raz(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision recip_rcol(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rf(nr+1)
double precision rlows(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rloww(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision ro_surf(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfs(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision rsurfw(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatu(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision tanphiatv(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision xg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yc(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision yg(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /grid_rs/ dxc, dxf, dxg, dxv, dyc, dyf, dyg, dyu, r_low,
$rloww, rlows, ro_surf, rsurfw, rsurfs, hfacc, hfacw, hfacs,
$recip_dxc, recip_dxf, recip_dxg, recip_dxv, recip_dyc, recip_dyf,
$recip_dyg, recip_dyu, recip_rcol, recip_hfacc, recip_hfacw,
$recip_hfacs, xc, yc, ra, raw, ras, raz, xg, yg, maskinc, maskinw,
$maskins, maskc, maskw, masks, recip_ra, recip_raw, recip_ras,
$recip_raz, drc, drf, recip_drc, recip_drf, rc, rf, ahybsigmf,
$bhybsigmf, ahybsigmc, bhybsigmc, dahybsigf, dbhybsigf, dbhybsigc,
$dahybsigc, tanphiatu, tanphiatv, anglecosc, anglesinc, fcori,
$fcorig, fcoricos
integer cg2dchkresfreq
integer cg2dmaxiters
integer cg2dprecondfreq
integer cg3dchkresfreq
integer cg3dmaxiters
integer debuglevel
integer momforcingoutab
integer monitorselect
integer nenditer
integer niter0
integer nonlinfreesurf
integer ntimesteps
integer readbinaryprec
integer saltadvscheme
integer saltvertadvscheme
integer select_rstar
integer selectaddfluid
integer selectkescheme
integer selectnhfreesurf
integer selectsigmacoord
integer selectvortscheme
integer tempadvscheme
integer tempvertadvscheme
integer tracforcingoutab
integer writebinaryprec
integer writestateprec
common /parm_i/ cg2dmaxiters, cg2dchkresfreq, cg2dprecondfreq,
$cg3dmaxiters, cg3dchkresfreq, niter0, ntimesteps, nenditer,
$writestateprec, writebinaryprec, readbinaryprec, nonlinfreesurf,
$select_rstar, selectnhfreesurf, selectsigmacoord, selectaddfluid,
$momforcingoutab, tracforcingoutab, tempadvscheme,
$tempvertadvscheme, saltadvscheme, saltvertadvscheme,
$selectkescheme, selectvortscheme, monitorselect, debuglevel
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
integer dphinhstatus
integer mom_startab
integer nchecklev
integer nhydstartab
integer saltstartab
integer tempstartab
common /restart_i/ nchecklev, tempstartab, saltstartab,
$mom_startab, nhydstartab, dphinhstatus
C==============================================
C declare arguments
C==============================================
double precision addphihydx(1-olx:snx+olx,1-oly:sny+oly)
double precision addphihydy(1-olx:snx+olx,1-oly:sny+oly)
double precision adgudissip(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvdissip(1-olx:snx+olx,1-oly:sny+oly)
double precision adphisurfx(1-olx:snx+olx,1-oly:sny+oly)
double precision adphisurfy(1-olx:snx+olx,1-oly:sny+oly)
integer bi
integer bj
integer imax
integer imin
integer jmax
integer jmin
integer k
integer myiter
C==============================================
C declare local variables
C==============================================
double precision adgucor(1-olx:snx+olx,1-oly:sny+oly)
double precision adgutmp(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvcor(1-olx:snx+olx,1-oly:sny+oly)
double precision adgvtmp(1-olx:snx+olx,1-oly:sny+oly)
integer i
integer ip1
integer ip2
integer j
double precision phxfac
double precision phyfac
double precision psfac
C----------------------------------------------
C RESET LOCAL ADJOINT VARIABLES
C----------------------------------------------
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgucor(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgutmp(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgvcor(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgvtmp(ip1,ip2) = 0.d0
end do
end do
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
psfac = pffacmom*(1.d0-implicsurfpress)*recip_deepfacc(k)*
$recip_rhofacc(k)
phxfac = pffacmom
phyfac = pffacmom
if (( .not. staggertimestep) .and. ( .not. implicitintgravwave))
$then
phxfac = 0.
phyfac = 0.
endif
do j = jmin, jmax
do i = imin, imax
addphihydy(i,j) = addphihydy(i,j)-adgv(i,j,k,bi,bj)*deltatmom*
$phyfac*masks(i,j,k,bi,bj)
adgvtmp(i,j) = adgvtmp(i,j)+adgv(i,j,k,bi,bj)*deltatmom*masks(
$i,j,k,bi,bj)
adphisurfy(i,j) = adphisurfy(i,j)-adgv(i,j,k,bi,bj)*deltatmom*
$psfac*masks(i,j,k,bi,bj)
advvel(i,j,k,bi,bj) = advvel(i,j,k,bi,bj)+adgv(i,j,k,bi,bj)
adgv(i,j,k,bi,bj) = 0.d0
end do
end do
do j = jmin, jmax
do i = imin, imax
addphihydx(i,j) = addphihydx(i,j)-adgu(i,j,k,bi,bj)*deltatmom*
$phxfac*maskw(i,j,k,bi,bj)
adgutmp(i,j) = adgutmp(i,j)+adgu(i,j,k,bi,bj)*deltatmom*maskw(
$i,j,k,bi,bj)
adphisurfx(i,j) = adphisurfx(i,j)-adgu(i,j,k,bi,bj)*deltatmom*
$psfac*maskw(i,j,k,bi,bj)
aduvel(i,j,k,bi,bj) = aduvel(i,j,k,bi,bj)+adgu(i,j,k,bi,bj)
adgu(i,j,k,bi,bj) = 0.d0
end do
end do
if (momviscosity .and. ( .not. momdissip_in_ab)) then
do j = jmin, jmax
do i = imin, imax
adgvdissip(i,j) = adgvdissip(i,j)+adgvtmp(i,j)
adgudissip(i,j) = adgudissip(i,j)+adgutmp(i,j)
end do
end do
endif
if (usecdscheme) then
do j = jmin, jmax
do i = imin, imax
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)+adgvtmp(i,j)
adgvcor(i,j) = adgvcor(i,j)+adgvtmp(i,j)
adgvtmp(i,j) = 0.d0
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)+adgutmp(i,j)
adgucor(i,j) = adgucor(i,j)+adgutmp(i,j)
adgutmp(i,j) = 0.d0
end do
end do
call adcd_code_scheme( bi,bj,k,addphihydx,addphihydy,adgutmp,
$adgvtmp,adgucor,adgvcor )
if (momviscosity .and. ( .not. momdissip_in_ab)) then
do j = jmin, jmax
do i = imin, imax
adgvdissip(i,j) = adgvdissip(i,j)+adgvtmp(i,j)
adgudissip(i,j) = adgudissip(i,j)+adgutmp(i,j)
end do
end do
endif
do j = jmin, jmax
do i = imin, imax
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)+adgvtmp(i,j)
adgvtmp(i,j) = 0.d0
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)+adgutmp(i,j)
adgutmp(i,j) = 0.d0
end do
end do
else
do j = jmin, jmax
do i = imin, imax
adgv(i,j,k,bi,bj) = adgv(i,j,k,bi,bj)+adgvtmp(i,j)
adgvtmp(i,j) = 0.d0
adgu(i,j,k,bi,bj) = adgu(i,j,k,bi,bj)+adgutmp(i,j)
adgutmp(i,j) = 0.d0
end do
end do
endif
if (momforcing .and. momforcingoutab .eq. 1) then
call adexternal_forcing_v( bi,bj,k )
call adexternal_forcing_u( bi,bj,k )
endif
call adadams_bashforth2( bi,bj,k,adgv,adgvnm1,mom_startab,myiter )
call adadams_bashforth2( bi,bj,k,adgu,adgunm1,mom_startab,myiter )
if (momforcing .and. momforcingoutab .ne. 1) then
call adexternal_forcing_v( bi,bj,k )
call adexternal_forcing_u( bi,bj,k )
endif
if (momviscosity .and. momdissip_in_ab) then
do j = jmin, jmax
do i = imin, imax
adgvdissip(i,j) = adgvdissip(i,j)+adgv(i,j,k,bi,bj)
adgudissip(i,j) = adgudissip(i,j)+adgu(i,j,k,bi,bj)
end do
end do
endif
phxfac = pffacmom
phyfac = pffacmom
if (( .not. staggertimestep) .and. ( .not. implicitintgravwave))
$then
do j = jmin, jmax
do i = imin, imax
addphihydy(i,j) = addphihydy(i,j)-adgv(i,j,k,bi,bj)*phyfac
addphihydx(i,j) = addphihydx(i,j)-adgu(i,j,k,bi,bj)*phxfac
end do
end do
endif
end
subroutine adtimestep_tracer( bi, bj, imin, imax, jmin, jmax, k,
$deltatloc, adtracer, adgtracer )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
C==============================================
C declare arguments
C==============================================
double precision adgtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtracer(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
integer bi
integer bj
double precision deltatloc
integer imax
integer imin
integer jmax
integer jmin
integer k
C==============================================
C declare local variables
C==============================================
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do j = jmin, jmax
do i = imin, imax
adtracer(i,j,k,bi,bj) = adtracer(i,j,k,bi,bj)+adgtracer(i,j,k,
$bi,bj)
adgtracer(i,j,k,bi,bj) = adgtracer(i,j,k,bi,bj)*deltatloc
end do
end do
end
subroutine adtracers_correction_step( mytime, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
if (cadjfreq .ne. 0.) then
call adconvective_adjustment( bi,bj,mytime,mythid )
endif
end do
end do
do bj = mybyhi(mythid), mybylo(mythid), -1
do bi = mybxhi(mythid), mybxlo(mythid), -1
if (saltstepping) then
call adcycle_tracer( bi,bj,adsalt,adgs )
endif
if (tempstepping) then
call adcycle_tracer( bi,bj,adtheta,adgt )
endif
end do
end do
end
subroutine mdtracers_correction_step( mytime, myiter, mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision etan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision gs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision gvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision salt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision theta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision uvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision vvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision wvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /dynvars_r/ etan, uvel, vvel, wvel, theta, salt, gu, gv,
$gt, gs, gunm1, gvnm1, gtnm1, gsnm1
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical allowfreezing
logical balanceempmr
logical balanceprintmean
logical balanceqnet
logical checkinisalt
logical checkinitemp
logical debugmode
logical deepatmosphere
logical doab_ongtgs
logical dosaltclimrelax
logical dothetaclimrelax
logical dumpinitandlast
logical exactconserv
logical fluidisair
logical fluidiswater
logical globalfiles
logical highordervorticity
logical implicitdiffusion
logical implicitfreesurface
logical implicitintgravwave
logical implicitviscosity
logical inadexact
logical inadfalse
logical inadmode
logical inadtrue
logical linfsconservetr
logical maskinisalt
logical maskinitemp
logical metricterms
logical momadvection
logical momdissip_in_ab
logical momforcing
logical momimplvertadv
logical mompressureforcing
logical momstepping
logical momviscosity
logical monitor_stdio
logical multidimadvection
logical no_slip_bottom
logical no_slip_sides
logical nonhydrostatic
logical outputtypesinclusive
logical periodicexternalforcing
logical pickup_read_mdsio
logical pickup_write_immed
logical pickup_write_mdsio
logical pickupstrictlymatch
logical quasihydrostatic
logical rigidlid
logical rotategrid
logical saltadvection
logical saltforcing
logical saltimplvertadv
logical saltisactivetr
logical saltstepping
logical setcenterdr
logical setinterfdr
logical snapshot_mdsio
logical staggertimestep
logical startfrompickupab2
logical tempadvection
logical tempforcing
logical tempimplvertadv
logical tempisactivetr
logical tempstepping
logical timeave_mdsio
logical uniformlin_phisurf
logical upwindshear
logical upwindvorticity
logical use3dcoriolis
logical use3dsolver
logical useabsvorticity
logical useareavisclength
logical usebetaplanef
logical usecdscheme
logical useconstantf
logical usecoriolis
logical usedynp_ineos_zc
logical useenergyconservingcoriolis
logical usefullleith
logical usejamartmomadv
logical usejamartwetpoints
logical usemultidimadvec
logical usenhmterms
logical useoldfreezing
logical usepickupbeforec54
logical userealfreshwaterflux
logical usespheref
logical usesrcgsolver
logical usestraintensionvisc
logical usingcartesiangrid
logical usingcurvilineargrid
logical usingcylindricalgrid
logical usingpcoords
logical usingsphericalpolargrid
logical usingzcoords
logical vectorinvariantmomentum
logical writepickupatend
common /parm_l/ fluidisair, fluidiswater, usingpcoords,
$usingzcoords, usedynp_ineos_zc, usingcartesiangrid,
$usingsphericalpolargrid, rotategrid, usingcurvilineargrid,
$usingcylindricalgrid, deepatmosphere, setinterfdr, setcenterdr,
$no_slip_sides, no_slip_bottom, usefullleith, usestraintensionvisc,
$ useareavisclength, momviscosity, momadvection, momforcing,
$mompressureforcing, metricterms, usenhmterms, usecoriolis,
$use3dcoriolis, useconstantf, usebetaplanef, usespheref,
$usecdscheme, vectorinvariantmomentum, useenergyconservingcoriolis,
$ usejamartwetpoints, usejamartmomadv, upwindvorticity,
$highordervorticity, useabsvorticity, upwindshear, momstepping,
$tempstepping, saltstepping, tempadvection, tempisactivetr,
$tempforcing, saltadvection, saltisactivetr, saltforcing,
$maskinitemp, maskinisalt, checkinitemp, checkinisalt,
$userealfreshwaterflux, rigidlid, implicitfreesurface,
$exactconserv, linfsconservetr, uniformlin_phisurf,
$quasihydrostatic, nonhydrostatic, use3dsolver,
$implicitintgravwave, staggertimestep, implicitdiffusion,
$implicitviscosity, tempimplvertadv, saltimplvertadv,
$momimplvertadv, multidimadvection, usemultidimadvec,
$momdissip_in_ab, doab_ongtgs, balanceempmr, balanceqnet,
$balanceprintmean, dothetaclimrelax, dosaltclimrelax,
$allowfreezing, useoldfreezing, periodicexternalforcing,
$globalfiles, pickupstrictlymatch, usepickupbeforec54,
$startfrompickupab2, pickup_read_mdsio, pickup_write_mdsio,
$pickup_write_immed, writepickupatend, timeave_mdsio,
$snapshot_mdsio, monitor_stdio, outputtypesinclusive,
$dumpinitandlast, debugmode, inadmode, inadtrue, inadfalse,
$inadexact, usesrcgsolver
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer myiter
integer mythid
double precision mytime
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
C**********************************************
C executable statements of routine
C**********************************************
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
if (tempstepping) then
call cycle_tracer( bi,bj,theta,gt,mytime,myiter,mythid )
endif
if (saltstepping) then
call cycle_tracer( bi,bj,salt,gs,mytime,myiter,mythid )
endif
end do
end do
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
if (cadjfreq .ne. 0.) then
call mdconvective_adjustment( bi,bj,mytime,myiter,mythid )
endif
end do
end do
end
subroutine adupdate_etah( mythid )
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer max_no_threads
parameter ( max_no_threads = 4 )
integer npx
parameter ( npx = 1 )
integer npy
parameter ( npy = 1 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer snx
parameter ( snx = 45 )
integer nx
parameter ( nx = snx*nsx*npx )
integer sny
parameter ( sny = 20 )
integer ny
parameter ( ny = sny*nsy*npy )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
C==============================================
C declare common blocks
C==============================================
double precision adetan(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adgs(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgsnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgtnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgu(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgunm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgv(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adgvnm1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adsalt(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adtheta(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision aduvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision advvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
double precision adwvel(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,nsy)
common /addynvars_r/ adetan, aduvel, advvel, adwvel, adtheta,
$adsalt, adgu, adgv, adgt, adgs, adgunm1, adgvnm1, adgtnm1, adgsnm1
double precision adetah(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /addynvars_r_2/ adetah
double precision addetahdt(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adpmepr(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adexact_eta_local/ addetahdt, adpmepr
integer eedataunit
integer errormessageunit
integer ioerrorcount(max_no_threads)
integer maxlengthprt1d
integer modeldataunit
integer mybxhi(max_no_threads)
integer mybxlo(max_no_threads)
integer mybyhi(max_no_threads)
integer mybylo(max_no_threads)
integer myprocid
integer mypx
integer mypy
integer myxgloballo
integer myygloballo
integer nthreads
integer ntx
integer nty
integer numberofprocs
integer pidio
integer scrunit1
integer scrunit2
integer standardmessageunit
common /eeparams_i/ errormessageunit, standardmessageunit,
$maxlengthprt1d, scrunit1, scrunit2, eedataunit, modeldataunit,
$numberofprocs, pidio, myprocid, mypx, mypy, myxgloballo,
$myygloballo, nthreads, mybxlo, mybxhi, mybylo, mybyhi, ntx, nty,
$ioerrorcount
logical useaim
logical useatm2d
logical usebulkforce
logical usecal
logical usecheapaml
logical usediagnostics
logical usedown_slope
logical useebm
logical useecco
logical useembed_files
logical useexf
logical usefizhi
logical useflt
logical usegad
logical usegchem
logical useggl90
logical usegmredi
logical usegrdchk
logical usegridalt
logical useicefront
logical usekpp
logical useland
logical uselayers
logical usematrix
logical usemnc
logical usemy82
logical usemypackage
logical useobcs
logical useoffline
logical useopps
logical usepp81
logical useptracers
logical userbcs
logical useregrid
logical userunclock
logical usesalt_plume
logical usesbo
logical useseaice
logical useshap_filt
logical useshelfice
logical usesmooth
logical usethsice
logical usezonal_filt
common /parm_packages/ usegad, useobcs, useshap_filt,
$usezonal_filt, useopps, usepp81, usemy82, useggl90, usekpp,
$usegmredi, usedown_slope, usecal, useexf, usebulkforce, useebm,
$usecheapaml, usegrdchk, usesmooth, useecco, usesbo, useflt,
$useptracers, usegchem, userbcs, useoffline, usematrix, useseaice,
$usesalt_plume, useshelfice, useicefront, usethsice, useatm2d,
$useaim, useland, usefizhi, usegridalt, usediagnostics, useregrid,
$uselayers, usemnc, userunclock, useembed_files, usemypackage
double precision abeps
double precision adjdumpfreq
double precision adjmonitorfreq
double precision affacmom
double precision alph_ab
double precision basetime
double precision beta
double precision beta_ab
double precision bl79latvary
double precision bottomdraglinear
double precision bottomdragquadratic
double precision cadjfreq
double precision cffacmom
double precision cg2dpcoffdfac
double precision cg2dtargetresidual
double precision cg2dtargetreswunit
double precision cg3dtargetresidual
double precision chkptfreq
double precision convertfw2salt
double precision cospower
double precision dbdrref(nr)
double precision delr(nr)
double precision delrc(nr+1)
double precision deltat
double precision deltatclock
double precision deltatfreesurf
double precision deltatmom
double precision delx(nx)
double precision dely(ny)
double precision diagfreq
double precision diffk4s
double precision diffk4t
double precision diffkhs
double precision diffkht
double precision diffkrbl79deep
double precision diffkrbl79ho
double precision diffkrbl79scl
double precision diffkrbl79surf
double precision diffkrbleqdeep
double precision diffkrbleqho
double precision diffkrbleqscl
double precision diffkrbleqsurf
double precision diffkrnrs(nr)
double precision diffkrnrt(nr)
double precision drhosmall
double precision dttracerlev(nr)
double precision dumpfreq
double precision endtime
double precision epsab_cd
double precision externforcingcycle
double precision externforcingperiod
double precision f0
double precision fofacmom
double precision freesurffac
double precision gbaro
double precision gravity
double precision hfacinf
double precision hfacmin
double precision hfacmindp
double precision hfacmindr
double precision hfacmindz
double precision hfacsup
double precision hmixcriteria
double precision hmixsmooth
double precision implicdiv2dflow
double precision implicitnhpress
double precision implicsurfpress
double precision ivdc_kappa
double precision latbandclimrelax
double precision mass2runit
double precision monitorfreq
double precision mtfacmom
double precision nh_am2
double precision omega
double precision pchkptfreq
double precision pffacmom
double precision phieuler
double precision phiref(2*nr+1)
double precision psieuler
double precision rcd
double precision recip_gravity
double precision recip_rhoconst
double precision recip_rhofacc(nr)
double precision recip_rhofacf(nr+1)
double precision recip_rhonil
double precision recip_rsphere
double precision rho1ref(nr)
double precision rhoconst
double precision rhoconstfresh
double precision rhofacc(nr)
double precision rhofacf(nr+1)
double precision rhonil
double precision ro_sealevel
double precision rotationperiod
double precision rsigmabnd
double precision rsphere
double precision runit2mass
double precision rvel2wunit(nr+1)
double precision salt_addmass
double precision salt_evprrn
double precision sidedragfactor
double precision smoothabsfuncrange
double precision sref(nr)
double precision starttime
double precision taucd
double precision tausaltclimrelax
double precision tauthetaclimrelax
double precision tave_lastiter
double precision tavefreq
double precision tcylin
double precision tcylout
double precision temp_addmass
double precision temp_evprrn
double precision thetaeuler
double precision tref(nr)
double precision vffacmom
double precision visca4
double precision visca4d
double precision visca4grid
double precision visca4gridmax
double precision visca4gridmin
double precision visca4max
double precision visca4remax
double precision visca4w
double precision visca4z
double precision viscah
double precision viscahd
double precision viscahgrid
double precision viscahgridmax
double precision viscahgridmin
double precision viscahmax
double precision viscahremax
double precision viscahw
double precision viscahz
double precision viscarnr(nr)
double precision viscc2leith
double precision viscc2leithd
double precision viscc2smag
double precision viscc4leith
double precision viscc4leithd
double precision viscc4smag
double precision viscfacadj
double precision wunit2rvel(nr+1)
double precision xgorigin
double precision ygorigin
common /parm_r/ cg2dtargetresidual, cg2dtargetreswunit,
$cg2dpcoffdfac, cg3dtargetresidual, delr, delrc, delx, dely,
$deltat, deltatmom, dttracerlev, deltatfreesurf, deltatclock,
$abeps, alph_ab, beta_ab, xgorigin, ygorigin, rsphere,
$recip_rsphere, f0, beta, viscfacadj, viscah, viscahw, viscahmax,
$viscahgrid, viscahgridmax, viscahgridmin, viscc2leith,
$viscc2leithd, viscc2smag, viscc4smag, viscahd, viscahz, visca4d,
$visca4z, visca4, visca4w, visca4max, visca4grid, visca4gridmax,
$visca4gridmin, viscahremax, visca4remax, viscc4leith,
$viscc4leithd, viscarnr, diffkht, diffk4t, diffkrnrt, diffkhs,
$diffk4s, diffkrnrs, diffkrbl79surf, diffkrbl79deep, diffkrbl79scl,
$ diffkrbl79ho, bl79latvary, diffkrbleqsurf, diffkrbleqdeep,
$diffkrbleqscl, diffkrbleqho, taucd, rcd, epsab_cd, freesurffac,
$implicsurfpress, implicdiv2dflow, implicitnhpress, hfacmin,
$hfacmindz, hfacinf, hfacsup, gravity, recip_gravity, gbaro,
$rhonil, recip_rhonil, rhoconst, recip_rhoconst, rhofacc,
$recip_rhofacc, rhofacf, recip_rhofacf, rhoconstfresh, rho1ref,
$tref, sref, phiref, dbdrref, rvel2wunit, wunit2rvel, mass2runit,
$runit2mass, basetime, starttime, endtime, chkptfreq, pchkptfreq,
$dumpfreq, adjdumpfreq, diagfreq, tavefreq, tave_lastiter,
$monitorfreq, adjmonitorfreq, affacmom, vffacmom, pffacmom,
$cffacmom, fofacmom, mtfacmom, cospower, cadjfreq, omega,
$rotationperiod, tauthetaclimrelax, tausaltclimrelax,
$latbandclimrelax, externforcingcycle, externforcingperiod,
$convertfw2salt, temp_evprrn, salt_evprrn, temp_addmass,
$salt_addmass, hfacmindr, hfacmindp, ivdc_kappa, hmixcriteria,
$drhosmall, hmixsmooth, ro_sealevel, rsigmabnd, sidedragfactor,
$bottomdraglinear, bottomdragquadratic, nh_am2, smoothabsfuncrange,
$ tcylin, tcylout, phieuler, thetaeuler, psieuler
C==============================================
C declare arguments
C==============================================
integer mythid
C==============================================
C declare local variables
C==============================================
integer bi
integer bj
integer i
integer j
C----------------------------------------------
C ROUTINE BODY
C----------------------------------------------
if (implicdiv2dflow .ne. 1.d0 .or. useobcs) then
call adexch_xy_rl( adetah,mythid )
endif
do bj = mybylo(mythid), mybyhi(mythid)
do bi = mybxlo(mythid), mybxhi(mythid)
if (implicdiv2dflow .eq. 1.d0) then
do j = 1-oly, sny+oly
do i = 1-olx, snx+olx
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+adetah(i,j,bi,bj)
adetah(i,j,bi,bj) = 0.d0
end do
end do
else
do j = 1, sny
do i = 1, snx
addetahdt(i,j,bi,bj) = addetahdt(i,j,bi,bj)+adetah(i,j,
$bi,bj)*(1.-implicdiv2dflow)*deltatfreesurf
adetan(i,j,bi,bj) = adetan(i,j,bi,bj)+adetah(i,j,bi,bj)
adetah(i,j,bi,bj) = 0.d0
end do
end do
endif
end do
end do
end
subroutine adzero
C******************************************************************
C******************************************************************
C** This routine was generated by Automatic differentiation. **
C** FastOpt: Transformation of Algorithm in Fortran, TAF 2.0.2 **
C******************************************************************
C******************************************************************
C==============================================
C all entries are defined explicitly
C==============================================
implicit none
C==============================================
C declare parameters
C==============================================
integer ndv2d
parameter ( ndv2d = 23 )
integer ndv3d
parameter ( ndv3d = 12 )
integer nr
parameter ( nr = 15 )
integer nsx
parameter ( nsx = 2 )
integer nsy
parameter ( nsy = 2 )
integer olx
parameter ( olx = 2 )
integer oly
parameter ( oly = 2 )
integer snx
parameter ( snx = 45 )
integer sny
parameter ( sny = 20 )
C==============================================
C declare common blocks
C==============================================
double precision adautodiff_store_dyn1(1-olx:snx+olx,1-oly:sny+
$oly,nr,nsx,nsy,ndv3d)
double precision adautodiff_store_dyn2(1-olx:snx+olx,1-oly:sny+
$oly,nsx,nsy,ndv2d)
common /adautodiff_store_dyn/ adautodiff_store_dyn1,
$adautodiff_store_dyn2
double precision adcontrolvars_r1(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /adcontrolvars_r/ adcontrolvars_r1
double precision adcost_mean_r1(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
common /adcost_mean_r/ adcost_mean_r1
double precision adcost_objf7(nsx,nsy)
double precision adcost_objf8(nsx,nsy)
common /adcost_objf/ adcost_objf7, adcost_objf8
double precision addynvars_cd1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_cd2(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_cd3(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
double precision addynvars_cd4(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_cd5(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_cd/ addynvars_cd1, addynvars_cd2, addynvars_cd3,
$ addynvars_cd4, addynvars_cd5
double precision addynvars_diag2(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision addynvars_diag3(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
common /addynvars_diag/ addynvars_diag2, addynvars_diag3
double precision addynvars_r1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision addynvars_r10(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r11(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r12(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r13(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r14(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r2(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r3(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r4(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r5(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r6(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r7(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r8(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision addynvars_r9(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /addynvars_r/ addynvars_r1, addynvars_r2, addynvars_r3,
$addynvars_r4, addynvars_r5, addynvars_r6, addynvars_r7,
$addynvars_r8, addynvars_r9, addynvars_r10, addynvars_r11,
$addynvars_r12, addynvars_r13, addynvars_r14
double precision addynvars_r_21(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /addynvars_r_2/ addynvars_r_21
double precision adexact_eta_local2(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adexact_eta_local3(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adexact_eta_local/ adexact_eta_local2, adexact_eta_local3
double precision adffields_empmr1(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /adffields_empmr/ adffields_empmr1
double precision adffields_fu1(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /adffields_fu/ adffields_fu1
double precision adffields_fv1(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /adffields_fv/ adffields_fv1
double precision adffields_qnet1(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /adffields_qnet/ adffields_qnet1
double precision adffields_saltflux1(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adffields_saltflux/ adffields_saltflux1
double precision adffields_sss1(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /adffields_sss/ adffields_sss1
double precision adffields_sst1(1-olx:snx+olx,1-oly:sny+oly,nsx,
$nsy)
common /adffields_sst/ adffields_sst1
double precision adgm_hortensor1(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision adgm_hortensor2(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
common /adgm_hortensor/ adgm_hortensor1, adgm_hortensor2
double precision adgm_uvtensor1(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
double precision adgm_uvtensor2(1-olx:snx+olx,1-oly:sny+oly,nr,
$nsx,nsy)
common /adgm_uvtensor/ adgm_uvtensor1, adgm_uvtensor2
double precision adgm_wtensor1(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adgm_wtensor2(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
double precision adgm_wtensor3(1-olx:snx+olx,1-oly:sny+oly,nr,nsx,
$nsy)
common /adgm_wtensor/ adgm_wtensor1, adgm_wtensor2, adgm_wtensor3
double precision admean_qnet1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /admean_qnet/ admean_qnet1
double precision adsurf_correc1
double precision adsurf_correc2
common /adsurf_correc/ adsurf_correc1, adsurf_correc2
double precision adsurface_forcing1(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurface_forcing2(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurface_forcing3(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurface_forcing4(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
double precision adsurface_forcing5(1-olx:snx+olx,1-oly:sny+oly,
$nsx,nsy)
common /adsurface_forcing/ adsurface_forcing1, adsurface_forcing2,
$ adsurface_forcing3, adsurface_forcing4, adsurface_forcing5
double precision adtdfields1(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields10(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields11(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields12(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields13(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields14(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields2(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields3(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields4(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields5(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields6(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields7(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields8(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
double precision adtdfields9(1-olx:snx+olx,1-oly:sny+oly,nsx,nsy)
common /adtdfields/ adtdfields1, adtdfields2, adtdfields3,
$adtdfields4, adtdfields5, adtdfields6, adtdfields7, adtdfields8,
$adtdfields9, adtdfields10, adtdfields11, adtdfields12,
$adtdfields13, adtdfields14
C==============================================
C declare local variables
C==============================================
integer ip1
integer ip2
integer ip3
integer ip4
integer ip5
integer ip6
C----------------------------------------------
C reset adjoint common block variables
C----------------------------------------------
do ip6 = 1, ndv3d
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adautodiff_store_dyn1(ip1,ip2,ip3,ip4,ip5,ip6) = 0.d0
end do
end do
end do
end do
end do
end do
do ip5 = 1, ndv2d
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adautodiff_store_dyn2(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcontrolvars_r1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adcost_mean_r1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip2 = 1, nsy
do ip1 = 1, nsx
adcost_objf7(ip1,ip2) = 0.d0
end do
end do
do ip2 = 1, nsy
do ip1 = 1, nsx
adcost_objf8(ip1,ip2) = 0.d0
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_cd1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_cd2(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_cd3(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_cd4(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_cd5(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_diag2(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_diag3(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r2(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r3(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r4(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r5(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r6(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r7(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r8(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r9(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r10(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r11(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r12(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r13(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r14(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
addynvars_r_21(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adexact_eta_local2(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adexact_eta_local3(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adffields_empmr1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adffields_fu1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adffields_fv1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adffields_qnet1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adffields_saltflux1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adffields_sss1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adffields_sst1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgm_hortensor1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgm_hortensor2(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgm_uvtensor1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgm_uvtensor2(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgm_wtensor1(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgm_wtensor2(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip5 = 1, nsy
do ip4 = 1, nsx
do ip3 = 1, nr
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adgm_wtensor3(ip1,ip2,ip3,ip4,ip5) = 0.d0
end do
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
admean_qnet1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
adsurf_correc1 = 0.d0
adsurf_correc2 = 0.d0
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsurface_forcing1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsurface_forcing2(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsurface_forcing3(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsurface_forcing4(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adsurface_forcing5(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields1(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields2(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields3(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields4(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields5(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields6(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields7(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields8(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields9(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields10(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields11(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields12(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields13(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
do ip4 = 1, nsy
do ip3 = 1, nsx
do ip2 = 1-oly, sny+oly
do ip1 = 1-olx, snx+olx
adtdfields14(ip1,ip2,ip3,ip4) = 0.d0
end do
end do
end do
end do
end
More information about the MITgcm-devel
mailing list